[MySQL] Twee keer dezelde tabel joinen. *

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Maddog McHare
  • Registratie: Maart 2005
  • Laatst online: 19-01 00:38

Maddog McHare

ROCK AND STONE!

Topicstarter
Hi,

Ik probeer een query op te zetten in MySQL 4.1.12- en gebruik phpMyAdmin 2.6.0-pl3..
Ik wil graag een tabel genereren waarin 2 keer een naam voor komt. De eerste naam is een engineer en de tweede naam is de aanvrager. Beide namen (welke ook dezelfde kunnen zijn) komen uit de tabel "persoon" echter wordt de naam bepaald door een id voor de engineer uit tabel "project" en voor de aanvrager uit tabel "wo". Nu is het niet mogelijk om op 2x dezelfde tabel een JOIN te doen (zie pijlen onder). Hoe kan ik dit realiseren zonder een "tijdelijke tabel" aan te maken.


SELECT project.wo_nr,
project.kenmerk,
locatie.naam AS 'klantnaam',
persoon.voornaam AS 'engineer',
--------> persoon.voornaam AS 'aanvrager',
wo.ingevoerd_op,
wo.ingevoerd_door

FROM project
LEFT JOIN wo ON project.wo_nr = wo.wo_nr
LEFT JOIN locatie ON wo.locatie_id = locatie.id
LEFT JOIN persoon ON persoon.id = project.sales_eng
-----> LEFT JOIN persoon ON persoon.id = wo.ingevoerd_door


ORDER BY project.wo_nr DESC
LIMIT 0,200

M@Dd09


Acties:
  • 0 Henk 'm!

Verwijderd

omg, ik heb dit op school en ik faal er hard in....sorry voor onnutigge post maarja...

Doe dan ook gewoon niet, als je niks hebt toe te voegen post dan gewoon niet.

[ Voor 34% gewijzigd door Creepy op 26-01-2010 11:50 ]


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 23:04

MueR

Admin Tweakers Discord

is niet lief

Wat werkt er dan niet aan die query? Hij lijkt me gewoon te kloppen namelijk.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 12-09 10:03

Creepy

Tactical Espionage Splatterer

(jarig!)
Wat MueR zegt. Ik heb daarnaast je titel aangepast. Alleen "MySQL" zegt natuurlijk helemaal niks over het daadwerkelijke probleem.

Het is prima mogelijk om 1 tabel twee keer of zelfs vaker te joinen. Dus wat lukt er niet? Krijg je foutmeldingen?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Maddog McHare
  • Registratie: Maart 2005
  • Laatst online: 19-01 00:38

Maddog McHare

ROCK AND STONE!

Topicstarter
Ja ik dacht dat hij zo klopte maar PMA geeft :

MySQL retourneerde:

#1066 - Niet unieke waarde tabel/alias: 'persoon'

@hierboven inderdaad was topic titel vergeten aan te vullen -- MY BAD !

[ Voor 23% gewijzigd door Maddog McHare op 26-01-2010 11:53 ]

M@Dd09


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 10:54

Janoz

Moderator Devschuur®

!litemod

Je zult aan je database wel duidelijk moeten maken dat je het niet over dezelfde persoon tabel hebt. Computers gokken niet. Als iets ambigu is is het fout.

De oplossing is redelijk simpel en je hebt het al sort of toegepast voor de kolom 'voornaam'. AS kun je ook voor tabelnamen gebruiken.

ps: Dit is wel een erg brakke titel. Daar mag je wel even wat meer aandacht aan besteden. Voorstel kan via topic report.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Maddog McHare schreef op dinsdag 26 januari 2010 @ 11:44:
[...]
Nu is het niet mogelijk om op 2x dezelfde tabel een JOIN te doen (zie pijlen onder). Hoe kan ik dit realiseren zonder een "tijdelijke tabel" aan te maken.
[...]
Dat kan dus wel. Op dezelfde manier waarop je een alias aanmaakt voor de kolommen in je query, kan je dat ook doen voor tabellen. Het "AS" gedeelte wat je bij kolommen gebruikt is niet verplicht voor het aanmaken van een alias voor een tabel:
SQL:
1
2
3
4
5
6
7
8
9
SELECT
    aanvrager.naam AS naam1,
    uitvoerder.naam AS naam2
FROM
    project
JOIN
    naam aanvrager on project.aanvrager_id = aanvrager.id
JOIN
    naam uitvoerder on project.uitvoerder_id = uitvoerder.id


Ander kan MySQL niet zien uit welke tabel je welke naam wil hebben. :)

@Janoz: argh je was me voor. :P

[ Voor 10% gewijzigd door Verwijderd op 26-01-2010 11:59 . Reden: AS is niet verplicht bij tabellen ]


Acties:
  • 0 Henk 'm!

  • Maddog McHare
  • Registratie: Maart 2005
  • Laatst online: 19-01 00:38

Maddog McHare

ROCK AND STONE!

Topicstarter
@Rooz

Thanks, ik ga het proberen!

M@Dd09


Acties:
  • 0 Henk 'm!

  • Maddog McHare
  • Registratie: Maart 2005
  • Laatst online: 19-01 00:38

Maddog McHare

ROCK AND STONE!

Topicstarter
Mooi heb het werkend gekregen!

Many thanks allemaal, hij mag op slot.

M@D

M@Dd09

Pagina: 1