1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Ausgabe auch bei nicht zutreffender WHERE Bedingung

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von fablei, 13.11.06.

  1. fablei

    fablei Gast

    Hallo,
    Code:
    Select schule.schulname,count(protokoll_schule.schul_id) 
    From schule,protokoll_schule 
    WHERE schule.id=protokoll_schule.schul_id  
    Group by schule.schulname 
    
    Die Tabelle schule hat 1207 Einträge. Die Tabelle protokoll_schule hat aber nicht zu jeder Schule einen Eintrag, ergo kommt als Ergebnis nur der COUNT() von 981 Schulen raus.

    Wie schaffe ich es, auch die Schulen auszugben, bei denen die WHERE - Bedingung nicht zutrifft?

    Vielen Dank,
    FAbian
     
  2. ma.buso

    ma.buso Châtaigne du Léman

    Dabei seit:
    16.04.05
    Beiträge:
    824
    aus
    Code:
    WHERE schule.id=protokoll_schule.schul_id  
    mach
    Code:
    WHERE 1
    - Dann sollte er alle Schulen ausgeben.
     
  3. fablei

    fablei Gast

    Vielen Dank für deine Antwort,
    aber leider funktioniert dein Lösungsvorschlag nicht.

    Er gibt jetzt zwar alle Schulen aus, allerdings als Anzahl nun nicht mehr die zugehörige Anzahl der portokoll_schule Tabelle, sondern immer die volle Anzahl der protokoll_schule Tabelle.

    Ist ja auch klar, denn woher soll SQL jetzt wissen welche Protokolle welcher Schule zugeordnet werden.
     
  4. ma.buso

    ma.buso Châtaigne du Léman

    Dabei seit:
    16.04.05
    Beiträge:
    824
    mach doch den count extra :)
     
  5. fablei

    fablei Gast

  6. VollPfosten

    VollPfosten Roter Delicious

    Dabei seit:
    01.11.05
    Beiträge:
    94
    Du kannst ein Deine Abfrage anhängen:

    Code:
    UNION SELECT schulname,0 FROM schule WHERE id NOT IN (SELECT schul_id FROM protokoll_schule);
     
    #6 VollPfosten, 14.11.06
    Zuletzt bearbeitet: 14.11.06
  7. Hack

    Hack Granny Smith

    Dabei seit:
    17.11.04
    Beiträge:
    16
    oder Du versuchst es einfach mal so:

    Code:
    
    SELECT schule.schulname, 
           COUNT( protokoll_schule.schul_id ) AS anzahl
    FROM schule 
      LEFT JOIN protokoll_schule ON ( schule.id = protokoll_schule.schul_id )
    Group by schule.schulname
    
    
    dann holst Du alle Schulen und jeweils die Protokolle dazu. Gibt es kein Protokoll für eine Schule, sollte als COUNT ne 0 rauskommen.

    Ich habs jetzt nicht getestet, aber sollte eigentlich richtig sein ;)
     
    #7 Hack, 14.11.06
    Zuletzt bearbeitet: 14.11.06

Diese Seite empfehlen