[MySQL] Left Join werkt niet meer?

Pagina: 1
Acties:

  • Gods Lonely Man
  • Registratie: April 2002
  • Laatst online: 19-02-2024

Gods Lonely Man

A sidekick's sidekick

Topicstarter
Ik heb een probleem met een query, die op een nieuwe server niet werkt. De query werkt niet op de online server waar MySQL v.5.0.24a-standard draait, maar wel op twee testservers waar v4.1.11 op draait.

De betreffende query.
code:
1
2
3
4
5
SELECT *
FROM main m, koppel k
LEFT JOIN regio r
ON (m.regio_id=r.id)
WHERE m.main_id = k.main_id


De foutmelding die ik krijg is 1054 - Unknown column 'm.regio_id' in 'on clause'
Maar die kolom is zeker weten aanwezig. Alle overige query's werken ook gewoon, dus het lijkt met niet dat er een probleem met de connectie is oid. De tabellen zijn ook gewoon 100% aanwezig en identiek aan de testversies.

De volgende (bijna identieke) query werkt ook gewoon normaal:
code:
1
2
3
SELECT *
FROM main m, koppel k, regio r
WHERE m.main_id = k.main_id AND m.regio_id=r.id


Weet iemand waar dit aan ligt, want ik snap er weer eens helemaal niets van. ;(

It was that kind of a crazy afternoon, terrifically cold, and no sun out or anything, and you felt like you were disappearing every time you crossed a road.

If it weren't for Carbon-14, I wouldn't date at all.


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 18:19

Dido

heforshe

Je doet een join van k en r, maar joined op een veld uit m.

Daarnaast geberuik je, erg verwarrend, twee notaties om te joinen, expliciet (join on) en impliciet (je where is geen echte where).

het volgende zou wel moeten werken:

code:
1
2
3
4
SELECT *
FROM main m
INER JOIN  koppel k ON m.main_id = k.main_id
LEFT JOIN regio r ON  m.regio_id=r.id

[ Voor 29% gewijzigd door Dido op 11-01-2007 16:15 ]

Wat betekent mijn avatar?


Verwijderd

kun je de create query's ff hier dumpen.

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Even zoeken en je weet het:
http://dev.mysql.com/doc/refman/5.0/en/left-join-optimization.html
Helemaal onderaan heeft iemand jouw probleem ook ontdekt.

Kort samengevat Expliciete join gaat voor impliciete join. Vervang de , door INNER JOIN en je bent door naar de volgende ronde :) Ook kun je de haakjes zetten zoals beschreven in de URL.

edit:
mysql-kennis een tikkie roestig

[ Voor 12% gewijzigd door bigbeng op 11-01-2007 16:18 ]


  • Gods Lonely Man
  • Registratie: April 2002
  • Laatst online: 19-02-2024

Gods Lonely Man

A sidekick's sidekick

Topicstarter
Dat was probleem inderdaad!

Ik gebruik normaal altijd gewoon deze notitie
code:
1
2
3
SELECT *
FROM main m, koppel k
WHERE m.main_id = k.main_id

Daar was op zich niets mis mee toch? Dan zal ik nu maar gauw die andere notatie gebruiken.

Hartelijk dank! _O

It was that kind of a crazy afternoon, terrifically cold, and no sun out or anything, and you felt like you were disappearing every time you crossed a road.

If it weren't for Carbon-14, I wouldn't date at all.


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 18:19

Dido

heforshe

Gods Lonely Man schreef op donderdag 11 januari 2007 @ 16:22:
Dat was probleem inderdaad!

Ik gebruik normaal altijd gewoon deze notitie
code:
1
2
3
SELECT *
FROM main m, koppel k
WHERE m.main_id = k.main_id

Daar was op zich niets mis mee toch?
Het grootste probleem is overzichtelijkheid. Als je behalve een zooitje where clausules dvoor je join er nog wat "normale" tussen hebt staan is niet meer duidelijk welke alleen voor de join dienen en welke extra functionaliteit toevoegen. :)

Wat betekent mijn avatar?


  • Gods Lonely Man
  • Registratie: April 2002
  • Laatst online: 19-02-2024

Gods Lonely Man

A sidekick's sidekick

Topicstarter
Okee, dan ga ik die notatie voortaan maar altijd gebruiken. Bedankt. :)

It was that kind of a crazy afternoon, terrifically cold, and no sun out or anything, and you felt like you were disappearing every time you crossed a road.

If it weren't for Carbon-14, I wouldn't date at all.

Pagina: 1