[MySQL] Problem mit JOIN LEFT query *** gelöst ***

strolch00

redraft.de
ID: 155297
L
21 April 2006
1.684
72
Hallo Leute,

nu hab ich auch mal wieder ein Problem ;)

folgenden Query habe ich mir gebastelt

PHP:
$DbCl->ObjectQuery("SELECT `u.ID`
		, `u.Username`
		, `u.Password`
		, `u.Name`
		, `u.Birthday`
		, `u.Website`
		, `u.Email`
        , `u.Icq`
		, `u.Yahoo`
		, `u.EmailOf`
		, `a.ID`
		, `a.NBReady` FROM `".$Table['member']."` AS u LEFT JOIN `".$Table['member_activation']."` AS a ON `u.ID`='a.ID' WHERE `ID`='".$_SESSION['UserID']."'");

jetzt bekomme ich aber immer folgende Ausgabe mit echo mysql_error();

Unknown column 'u.ID' in 'field list'

also ich habe schon gegoogle aber nix gefunden der Query sollte aber meiner Meinung nach stimmen :-?

Hoffentlich weis einer von euch wo der Fehler ist

THX schonmal für die Mühe
 
Zuletzt bearbeitet:
In der Tabelle $Table['member'] alias `u` gibt es kein Feld `ID` ;)

edit:
happymaster hat Recht: es muss `u`.`ID` usw. heißen :yes:
 
Hm.. vielleicht liegt's an den Ticks `u.ID` - probier's mal ohne - also u.ID. Ansonsten fehlt das Feld wohl oder übel wirklich. Weiß ansonsten nicht, woe man richtig mit den Ticks arbeitet (aber u.ID sollte "notfalls" klappen); evtl. dann u.`ID`?

177.
 
oO ich trottel so habe ich es noch nicht probiert mit u.`ID`

@theHacker iD gibt es ich kenn ja die fehlermeldung war das erste was ich gecheckt hab

ich test mal die u.`` methode mal sehen meld mich gleich
 
ein Thx an happymaster es funz so wie es soll

PHP:
 $DbCl->ObjectQuery("SELECT u.`ID`
				, u.`Username`
				, u.`Password`
				, u.`Name`
				, u.`Birthday`
				, u.`Website`
				, u.`Email`
				, u.`Icq`
				, u.`Yahoo`
				, u.`EmailOf`
				, u.`Status`
				, a.`ID`
				, a.`NBReady` FROM `".$Table['member']."` AS u LEFT JOIN `".$Table['member_activation']."` AS a ON u.`ID`=a.`ID` WHERE u.`ID`='".$_SESSION['UserID']."'");

also alias ausgeklammert ;)

fein Teletubbie hat gelernt :ugly:

Kann man evtl. noch was an der Performance machen ? Oder ist der Query gut so wie er ist?
 
Zuletzt bearbeitet:
strolch00 schrieb:
Oder ist der Query gut so wie er ist?
Ich würd vielleicht aus
ON u.`ID`=a.`ID`
ein
USING(`ID`)
machen. Das dient aber nur der Übersicht und macht an der Performance rein gar nix.

Was anderes:
Du bist dir sicher, dass `u`.`id` kein Integer is ? ;)
 
theHacker schrieb:
Ich würd vielleicht aus
ON u.`ID`=a.`ID`
ein
USING(`ID`)
machen. Das dient aber nur der Übersicht und macht an der Performance rein gar nix.

Was anderes:
Du bist dir sicher, dass `u`.`id` kein Integer is ? ;)

du meinst ob ich mir sicher bin das u.id immer ein INT ist wegen sql injektion oder???

jap das bin ich wird im Login gecheckt

oder verstehe ich was falsch
 
^^ OK danke für den Tip das ist immer ein INT dann änder ich das noch

würde es Performance einbüsen wenn ich das (int) dafür setzte??

mein aktueller Code ist nun so
PHP:
$DbCl->ObjectQuery("SELECT u.`ID`
				, u.`Username`
				, u.`Password`
				, u.`Name`
				, u.`Birthday`
				, u.`Website`
				, u.`Email`
				, u.`Icq`
				, u.`Yahoo`
				, u.`EmailOf`
				, u.`Status`
				, a.`ID`
				, a.`NBReady` FROM `".$Table['member']."` AS u LEFT JOIN `".$Table['member_activation']."` AS a USING(`ID`) WHERE u.`ID`=".$_SESSION['UserID']);
 
Zuletzt bearbeitet:
strolch00 schrieb:
würde es performance einbüsen wenn ich das (int) dafür setzte??
Mach einfach die single Quotes weg, dann passts.

Zum Verständnis:
Für den Vergleich '2'=1 muss MySQL die '2' erst in 2 umwandeln, um dann 2=1 vergleichen zu können. Eine nutzlose Umwandlung also, da die ID eh als Integer vorliegt.

edit:
Ach so meinst. Ne mach das (int) weg, da brauchst ned. Wenn dann schadets nur ;)

edit2:
An die Query nix dranzuhängen, bringts auch ned wirklich ;)
PHP:
$var=$var."";
 
ok Danke an alle, funzt super

Spezial THX @theHacker das USING(`ID`) kannte ich noch nicht

*edit

ja das dran zu hängen mache ich wegen der Lesabrkeit ;) bins so gewohnt aber ok das int fliegt wieder raus

danke