Ergebnis 1 bis 4 von 4

Thema: Brauche mal bei Left Join Hilfe

  1. #1
    Benutzer
    Registriert seit
    17.04.2008
    Beiträge
    42

    Brauche mal bei Left Join Hilfe (gelöst)

    Wie bekomme ich es hin, dass statt X der zugehörige Wert aus der Spalte COUNT(p.uid) genutzt wird? Der Rest passt soweit. Muss nun nurnoch diese kleine Sache überwinden.

    Code:
    SELECT e. * , COUNT(p.uid) AS X, u.max_pm, u.min_verdienst 
    FROM `vms_emaildaten` AS e 
    LEFT JOIN `vms_userdaten` AS u ON e.uid = u.uid 
    LEFT JOIN `vms_paidmails_empfaenger` AS p ON e.uid = p.uid
    WHERE ( e.freigabe_fuer = '3' OR e.freigabe_fuer = '2' ) AND u.min_verdienst <= '10' AND X <= u.max_pm
    GROUP BY e.uid
    Dabei gibt es folgenden Fehler:
    Code:
    #1054 - Unknown column 'X' in 'where clause'
    Wenn ich aber statt dem X einen Wert eingebe, funktioniert es. Ich will aber, dass die beiden Werte COUNT(p.uid) und u.max_pm mit einander verglichen werden sollen.

    Lösungsvorschläge?

    Lieben Gruß
    Ralf

  2. #2
    Zitat Zitat von snowcat Beitrag anzeigen
    Lösungsvorschläge?
    In der WHERE Klausel hat MySQL noch keine Spalten selected, und hat somit X noch nicht zur Verfügung. X könntest du erst in einer HAVING-Klausel verwendne, aber in die WHERE-Klausel kannst du ja einfach statt X gleich COUNT(p.uid) nehmen


  3. #3
    Benutzer
    Registriert seit
    17.04.2008
    Beiträge
    42
    Code:
    SELECT e. * , COUNT( p.uid )  AS X, u.max_pm, u.min_verdienst
    FROM  `vms_emaildaten`  AS e
    LEFT  JOIN  `vms_userdaten`  AS u ON e.uid = u.uid
    LEFT  JOIN  `vms_paidmails_empfaenger`  AS p ON e.uid = p.uid
    WHERE (e.freigabe_fuer =  '3'
    OR e.freigabe_fuer =  '2'
    )
    AND u.min_verdienst <=  '10'
    AND COUNT( p.uid )  <= u.max_pm
    GROUP  BY e.uid
    dabei kommt dann folgender Fehler:
    Code:
      #1111 - Invalid use of group function
    Wie genau funktioniert das mit der HAVING-Klausel. Weil ich fast glaube, dass es so nicht so recht funktionieren will.

    EDIT: So, hab das mit dem HAVING rausbekommen. Damit geht es problemlos.
    Danke Sebmaster für den Hinweis.

    Code:
    SELECT e. * , COUNT( p.uid )  AS X, u.max_pm, u.min_verdienst
    FROM  `vms_emaildaten`  AS e
    LEFT  JOIN  `vms_userdaten`  AS u ON e.uid = u.uid
    LEFT  JOIN  `vms_paidmails_empfaenger`  AS p ON e.uid = p.uid
    WHERE (e.freigabe_fuer =  '3'
    OR e.freigabe_fuer =  '2'
    )
    AND u.min_verdienst <=  '10'
    GROUP  BY e.uid
    HAVING COUNT( p.uid )  <= u.max_pm

  4. #4
    tampulin
    Gast

Ähnliche Themen

  1. [SQL] (S) Hilfe bei Join
    Von Hardy im Forum [HD] Programmieren
    Antworten: 9
    Letzter Beitrag: 28.11.2009, 08:19
  2. Left Join, Datensatz in 2 Tabelle muss nicht vorhanden sein
    Von bulli im Forum [HD] Programmieren
    Antworten: 3
    Letzter Beitrag: 04.02.2009, 16:20
  3. Brauche Hilfe =D
    Von ddmler im Forum Talk, talk, talk...
    Antworten: 2
    Letzter Beitrag: 12.01.2009, 17:39
  4. brauche hilfe bei einen LEFT JOIN
    Von Hardy im Forum [HD] Programmieren
    Antworten: 4
    Letzter Beitrag: 27.03.2008, 21:20
  5. Problem: Leeres Resultat bei Join Left unter Mysql5
    Von kesselchen im Forum [HD] Programmieren
    Antworten: 3
    Letzter Beitrag: 19.03.2008, 19:26

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •