Frank Geisweid: Abfrage über zwei Tabellen

huhu,

Ich habe da eine Mysql Abfrage , die über zwei Tabellen geht und mich überfordert...  :-((

Ich habe eine Tabelle termine mit dem Index id und einem Feld datum
und eine zweite Tabelle startseite die einige  termine.id  darstellt in dem Feld termin\_id

Jetzt will ich mit einer Abfrage nachschauen welcher Termin der nächste ist termine.datum ,
welcher aber noch nicht bereits in der  startseite.termin\_id  eingetragen ist.

SELECT termine.id , termine.datum
FROM termine,startseite
WHERE (termine.datum > '2007-06-26')
AND ( startseite.termin_id != termine.id)
ORDER BY termine.datum LIMIT 1

irgendwie bekomme ich kein Ergebniss ???

Geht eigentlich die Abfrage -- startseite.termin_id != termine.id -- ???

Dank Geisi

  1. Selber huhu.

    Welche MySQL Version? (Bitte generell mit angeben)
    Unterstützt dein System 'subquery/ies'?

    Du möchtest einen expliziten LEFT OUTER JOIN von 'termine' zu 'startseite' verwenden. (Du hast implizit einen INNER JOIN verwendet auf die Ungleichheit von id und termin_id

      
    SELECT termine.id , termine.datum  
      FROM termine  
      LEFT OUTER JOIN startseite  
         ON termine.id = startseite.termin_id  
      WHERE startseite.termin_id IS NULL  
        AND termine.datum > '2007-06-26'   -- statt des fixen wertes solltest du die Datums/Zeitfunktionen wie TODAY() oder NOW() von MySQL benutzen  
        ORDER BY termine.datum ASC  
        LIMIT 1  
    
    

    Geht eigentlich die Abfrage -- startseite.termin_id != termine.id -- ???

    Geht schon, allerdings nicht für das was du erreichen möchtest.

    Grüsse
    Frank

    1. huhu? HUHU!

      DAAANKE!

      LEFT OUTER JOIN startseite ON termine.id = startseite.termin_id

      man lernt doch nie aus !

      Geisi