Unverstandener Fehler
am 04.08.2006 14:40:42 von Martin Kaffanke
Hallo!
Ich versuche diese Query (unverkürzt):
SELECT SQL_CALC_FOUND_ROWS
`Bewerber`.`AccountID`,
`Bewerber`.`Stelle`,
`Bewerber`.`Titel`,
`Bewerber`.`Name`,
`Bewerber`.`Vorname`,
`Bewerber`.`PLZ1`,
`Bewerber`.`Ort1`,
`Bewerber`.`Radius`
FROM `Bewerber`,
`Praxis`,
`Praxis_Beruf_list`,
`Praxis_Beruf_listitems`
LEFT JOIN `Praxis` AS maint1
ON `Bewerber`.`AccountID` = `maint1`.`AccountID`
LEFT JOIN `Praxis_Beruf_list` as list1
ON `Praxis`.`AccountID` = list1.`MainID`
WHERE (`Praxis_Beruf_listitems`.Item IN('Außendienstmitarbeiter'))
GROUP BY `Bewerber`.`AccountID`;
und bekomme:
# ERROR 1054 (42S22): Unknown column 'Bewerber.AccountID' in 'on clause'
SELECT AccountID FROM Bewerber;
liefert einige Datensätze. die ` tics habe ich auch schon weggenommen,
aber hat Erwartungsgemäß gar nichts gebracht.
Wie werde ich diesen Fehler los?
Danke,
Martin
Re: Unverstandener Fehler
am 04.08.2006 15:10:27 von Kai Ruhnau
Martin Kaffanke wrote:
> FROM `Bewerber`,
> `Praxis`,
> `Praxis_Beruf_list`,
> `Praxis_Beruf_listitems`
> LEFT JOIN `Praxis` AS maint1
> ON `Bewerber`.`AccountID` = `maint1`.`AccountID`
> LEFT JOIN `Praxis_Beruf_list` as list1
> ON `Praxis`.`AccountID` = list1.`MainID`
[snip]
> und bekomme:
>
> # ERROR 1054 (42S22): Unknown column 'Bewerber.AccountID' in 'on clause'
[snip]
> Wie werde ich diesen Fehler los?
Du möchtest nicht , und JOIN mischen. Das gab's hier schon mehrfach und
google sollte dir einige Ergebnisse geben.
Aber wofür machst du diese Unmengen von Backticks bei Bezeichnern, die
überhaupt keine reservierten Wörter sind?
Grüße
Kai
Re: Unverstandener Fehler
am 04.08.2006 15:23:35 von Thomas Rachel
Martin Kaffanke wrote:
> Hallo!
>
> Ich versuche diese Query (unverkürzt):
>
> SELECT SQL_CALC_FOUND_ROWS
> `Bewerber`.`AccountID`,
> `Bewerber`.`Stelle`,
> `Bewerber`.`Titel`,
> `Bewerber`.`Name`,
> `Bewerber`.`Vorname`,
> `Bewerber`.`PLZ1`,
> `Bewerber`.`Ort1`,
> `Bewerber`.`Radius`
> FROM `Bewerber`,
> `Praxis`,
> `Praxis_Beruf_list`,
> `Praxis_Beruf_listitems`
> LEFT JOIN `Praxis` AS maint1
> ON `Bewerber`.`AccountID` = `maint1`.`AccountID`
> LEFT JOIN `Praxis_Beruf_list` as list1
> ON `Praxis`.`AccountID` = list1.`MainID`
> WHERE (`Praxis_Beruf_listitems`.Item IN('AuÃendienstmitarbeiter'))
> GROUP BY `Bewerber`.`AccountID`;
Dieser Query kommt mir irgendwie falsch vor.
Ob er so klappen sollte, wie er da steht, weià ich jetzt nicht - aber bist
Du Dir sicher, daà Du die ersten 3 Tabellen so cross-joinen willst, wie es
da steht, und die vierte nochmal mit den anderen?
Zudem mischst Du den ","-Joinoperator mit den anderen. Das kann AFAIK bei
bestimmten MySQL-Versionen zu Problemen führen (Ausführungsreihenfolge
wurde irgendwann in 5.x geändert oder so was).
> und bekomme:
>
> # ERROR 1054 (42S22): Unknown column 'Bewerber.AccountID' in 'on clause'
Was Du hier machst (bei dem ersten LEFT JOIN): Du joinst
Praxis_Beruf_listitems mit Praxis AS maint1, gibst aber ein Kriterium für
Bewerber/maint1 an. An dieser Stelle des JOINS kennt er Bewerber einfach
nicht (in 5.x - früher gings glaube ich).
FROM `Bewerber`
LEFT JOIN `Praxis` AS maint1
ON `Bewerber`.`AccountID` = `maint1`.`AccountID`
,
`Praxis`
LEFT JOIN `Praxis_Beruf_list` as list1
ON `Praxis`.`AccountID` = list1.`MainID`
,
`Praxis_Beruf_listitems`
WHERE `Praxis_Beruf_listitems`.Item='AuÃendienstmitarbeiter'
sollte schon eher syntaktisch korrekt sein - aber ob es macht, was Du
willst, bezweifele ich immer noch. Da sind drei unkorrelierte
Tabellenblöcke drin, zwischen denen keine Beziehung hergestellt wird. (Das
WHERE habe ich umgestellt, da ich für das IN (...) keine Notwendigkeit
sah.)
Vermutlich willst Du aber so was:
FROM `Bewerber`
LEFT JOIN `Praxis` AS maint1
ON `Bewerber`.`AccountID` = `maint1`.`AccountID`
LEFT JOIN `Praxis_Beruf_list` as list1
ON maint1.`AccountID` = list1.`MainID`
JOIN `Praxis_Beruf_listitems` ON
HTH,
Thomas
--
Diese .sig st def kt.
Re: Unverstandener Fehler
am 04.08.2006 19:57:54 von jan.clauss
Martin Kaffanke schrieb:
> Hallo!
>
> Ich versuche diese Query (unverkürzt):
>
> SELECT SQL_CALC_FOUND_ROWS
> `Bewerber`.`AccountID`,
> `Bewerber`.`Stelle`,
> `Bewerber`.`Titel`,
> `Bewerber`.`Name`,
> `Bewerber`.`Vorname`,
> `Bewerber`.`PLZ1`,
> `Bewerber`.`Ort1`,
> `Bewerber`.`Radius`
> FROM `Bewerber`,
> `Praxis`,
> `Praxis_Beruf_list`,
> `Praxis_Beruf_listitems`
> LEFT JOIN `Praxis` AS maint1
> ON `Bewerber`.`AccountID` = `maint1`.`AccountID`
> LEFT JOIN `Praxis_Beruf_list` as list1
> ON `Praxis`.`AccountID` = list1.`MainID`
> WHERE (`Praxis_Beruf_listitems`.Item IN('Außendienstmitarbeiter'))
> GROUP BY `Bewerber`.`AccountID`;
>
>
> und bekomme:
>
> # ERROR 1054 (42S22): Unknown column 'Bewerber.AccountID' in 'on clause'
>
kommt mir bekannt vor... Als ich auf Mysql 5.0.18 umgestiegen bin...
Ungetesteter Ausschnitt:
....
FROM `Bewerber`
JOIN `Praxis`
JOIN `Praxis_Beruf_list`
JOIN `Praxis_Beruf_listitems`
LEFT JOIN `Praxis` AS maint1
....