Problem bei MySQL Abfrage

Hi,

klammere mal die Tabellen vor dem JOIN:
SQL:
SELECT p.* FROM (privatkunden p, users u, gruppen g)
   LEFT JOIN betriebsvers ON p.id = betriebsvers.kunde 
   WHERE p.user = u.user_id = u.user_gruppe = g.gruppen_id = 1 
      AND betriebsvers.kunde IS NULL 
   ORDER BY nachname, vorname

LG
 
Zuletzt bearbeitet von einem Moderator:
Hi,

und wieviele Ergebnisse bekommst Du, wenn Du den JOIN auf die Verträge weglässt?

SQL:
SELECT p.* FROM privatkunden p, users u, gruppen g 
   WHERE p.user = u.user_id = u.user_gruppe = g.gruppen_id = 1 
   ORDER BY nachname, vorname

LG

EDIT: Wenn Du Deinen Beitrag änderst, sollte das nachvollziehbar bleiben, so macht meine Antwort natürlich keinen Sinn mehr...
 
Zuletzt bearbeitet von einem Moderator:
Danke für die vielen und vor allem wirklich schnellen Antworten.
Nun funktioniert es.
Muss noch eben meinen Query anpassen, ich hoffe dass ihr mir nochmal helft, falls ich ein Problem hab..
Danke

//edit: So und da hab ich auch schon wieder ein Problem :D
Mein Query sieht jetzt so aus:
PHP:
SELECT p.* FROM privatkunden p, users u, gruppen g LEFT JOIN betriebsvers ON p.id = betriebsvers.kunde WHERE p.user = u.user_id = u.user_gruppe = g.gruppen_id = 1 AND betriebsvers.kunde IS NULL ORDER BY nachname, vorname
Und es kommt dieser Fehler:
Code:
#1054 - Unknown column 'p.id' in 'on clause'
Hallo,

ich bin mit dem gleichen Problem auf der Suche über diesen alten Thread gestolpert. Das Problem mit

#1054 - Unknown column 'p.id' in 'on clause'

ist einfach zu beheben, indem man die Reihenfolge der Tabellennamen im FROM-Block ändert.
Die fehlerhafte Version:

SELECT p.* FROM privatkunden p, users u, gruppen g
LEFT JOIN betriebsvers
ON p.id = betriebsvers.kunde
WHERE p.user = u.user_id = u.user ...

Die Tabelle, die in der ON-Clausel referenziert wird, muss in der FROM-Clausel als letztes genannt werden. Dann gibt es keinen Fehler mehr. (Änderung in MySQL 5).

Dieser Code sollte funktionieren:

SELECT p.* FROM users u, gruppen g, privatkunden p
LEFT JOIN betriebsvers
ON p.id = betriebsvers.kunde WHERE p.user = u.user_id = u.user ...


Gruß
canine
 
Hallo,
ich habe ein Problem mit dem folgenden Code nach Umstellung auf andere PHP und MySQL Version Seitens des Hosters:

$from_str = "from (" . TABLE_PRODUCTS . " p left join " . TABLE_PRODUCTS_TO_PRODUCTS_EXTRA_FIELDS . " p2pef on p.products_id=p2pef.products_id) left join " . TABLE_MANUFACTURERS . " m on m.manufacturers_id=p.manufacturers_id, " . TABLE_PRODUCTS_DESCRIPTION . " pd left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_CATEGORIES . " c, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c";

Es wird im Shop der folgende Fehler ausgegeben:
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'on p.products_id=p2pef.products_id)) left join manufacturers m on m.manufacturer' at line 1

Hat jemand eine Ahnung, wo hier der Fehler liegt? Mit der Änderungen der Reihenfolge komme ich leider nicht weiter...

Vielen Dank im voraus und lg
 
Zurück