Zu den Aufzeichnungen der tutorials.de-Live-Workshops
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
231
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von McMay
    McMay McMay ist offline Mitglied Bronze
    Registriert seit
    Nov 2005
    Ort
    Hamburg
    Beiträge
    28
    Hallo, ich will in meinem PHP Projekt die User einer Firma finden, die an einem bestimmten Tag KEINEN Termin gebucht haben. Das ganze sollte möglichst schon in der SQL Abfrage der DB stattfinden. Ich stehe z.Zt. wohl voll auf dem Schlauch. Ich bekomme immer die User angezeigt, die an dem Tag einen Termin gebucht haben. Ich will aber eben nicht diese sondern die verbleibenden als Ergebnis haben. Diese will ich per Email auf freie Termine aufmerksam machen.
    Hier meine SQL abfrage bis jetzt:
    Code :
    1
    2
    3
    4
    
    SELECT `Email` FROM `Customer`, `Reservation` WHERE 
    `Customer`.`CompanyID`  = 3 AND
    `Reservation`.`Datum` = '2010-09-09' AND
    `Reservation`.`CustomerID` = `Customer`.`CustomerID`
    Diese Abfrage gibt natürlich nur die Kunden aus die an diesem Tag gebucht haben. Aber wie frage ich nun die anderen ab.
    Bin über jeden 'Wink mit dem Zaunpfahl' dankbar.
    Gruß Heiko

    P.S. Ich bastele gerade auch an `Reservation`.`Datum` != xxx
    und SELECT DISTINCT Email from...
    bekomme dabei aber noch immer nicht nur die User die an diesem einen Tag keinen Termin gebucht haben. Langsam bin ich am verzweifeln...
    Geändert von McMay (07.09.10 um 23:41 Uhr)
     

  2. #2
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    2.998
    Wenn du schreibst:

    Code sql:
    1
    
    ... Datum <> '2010-09-09' ...

    oder auch

    Code sql:
    1
    
    ... NOT Datum = '2010-09-09' ...

    dann müsste es doch gehen?!
     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  3. #3
    Avatar von McMay
    McMay McMay ist offline Mitglied Bronze
    Registriert seit
    Nov 2005
    Ort
    Hamburg
    Beiträge
    28
    Das dachte ich mir dann ja auch. Aber wenn ich
    SQL Code:
    Code :
    1
    
    Datum != '2010-09-09'
    oder
    Code :
    1
    
    Datum <> '2010-09-09'
    schreibe, werden nur die User aussortiert, die noch nie einen Termin gebucht haben. Alle anderen hatten ja auch zu anderen Zeitpunkten mal einen Termin gebucht. Es muss also, denke ich, irgendwie mit einer Unterabfrage gearbeitet werden. Aber wie?
     

  4. #4
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    4.613
    Mit einem Left Join

    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    SELECT Email
    FROM
        Customer AS C
        LEFT JOIN (
            SELECT CustomerID
            FROM Reservation
            WHERE Reservation.Datum = '2010-09-09'
        ) AS R
            ON R.CustomerID = C.CustomerID
    WHERE R.CustomerID IS NULL;
     
    ---------------------------------------------------------------------------------------------------
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  5. #5
    Avatar von McMay
    McMay McMay ist offline Mitglied Bronze
    Registriert seit
    Nov 2005
    Ort
    Hamburg
    Beiträge
    28
    Super!
    Herzlichen Dank, das war es.
    Hab noch die CompanyID hinzugefügt, damit ich nur die User einer bestimmten Firma bekomme und damit hab ich es.
    Ich werde mich mal mit den LEFT JOIN beschäftigen, hab das wohl noch nicht so kapiert.
     

  6. #6
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    4.613
    Das Problem an deiner Lösung war das folgende.
    Du verknüpfst beide Tabellen im WHERE. Damit werden von beiden Tabellen nur diejenigen Datensätze genommen, die in beiden Tabellen Einträge haben. Mit dem LEFT JOIN nimmst du von der ersten Tabelle alle Einträge und von der Zweiten nur die passenden Einträge. Mit der IS NULL-Abfraeg im WHERE such ich alle raus, die ebee keine passenden Einträge in der zweiten Tabelle besitzen.
     
    ---------------------------------------------------------------------------------------------------
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

Ähnliche Themen

  1. Antworten: 6
    Letzter Beitrag: 25.10.10, 00:14
  2. mySQL. Alles EInträge auslesen die keinen Join Eintrag haben
    Von notebook20000 im Forum Relationale Datenbanksysteme
    Antworten: 8
    Letzter Beitrag: 21.06.07, 11:46
  3. Bild soll keinen Kasten haben...
    Von Apollon05 im Forum Sonstige Grafik-Programme
    Antworten: 6
    Letzter Beitrag: 03.04.07, 21:57
  4. SQL-Abfrage: Mitglieder die keinen Beitrag bezahlt haben anzeigen lassen
    Von aro69 im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 15.03.07, 09:42
  5. Nächstgelegenen Termin aus Datenbankfeldern finden
    Von preko im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 10.05.06, 10:27

Stichworte