Timon: MySQL - Etwas kompliziertere Abfrage über 2 Tabellen

Hallo,

Ich habe folgendes Problem:

Ich schreibe momentan ein "Karteikartensystem". Dabei geht es darum dass man mit Hilfe virtueller Karteikarten sein Wissen testet. Es gibt 5 Felder in denen die Karten sind. Zu Beginn befinden sich alle Karten im ersten Feld. Wenn man eine Frage richtig beantwortet wandert sie ein Feld weiter, wenn sie falsch beantwortet wird ein Feld zurück.

Nun habe ich 2 Tabellen:

In der ersten Tabelle ("fragen") sind die Fragen.

In der zweiten Tabelle ("user_fra") ist gespeichert wo welche Karte bei welchem Benutzer ist. (Nummer der Frage, Fach, UserID)

Nun ist aber in "user_fra" nur ein Eintrag vorhanden wenn die Frage mindestens in Feld 2 ist.

jetzt ist es leicht die Fragen aus Feld 2,3,4 und 5 auszulesen:

SELECT f.f_id,f.frage,f.antwort  
FROM fragen AS f, user_fra AS u  
WHERE f.f_id = u.f_id  
AND u.feld = [Feldnummer]  
AND u.u_id = [UserID]

nun möchte ich aber die Fragen aus Feld 1 auslesen. Da weiss ich aber leider nicht wie ich es machen soll dass ich Abfrage ob ein Eintrag nicht existiert.

Mir schwebte etwas vor wie:

SELECT f.f_id,f.frage,f.antwort  
FROM fragen AS f, user_fra AS u  
WENN ES KEINEN EINTRAG GIBT  
WHERE f.f_id = u.f_id  
AND u.u_id = [UserID]

Dass ist natürlich falsch so...

Ich denke dass es hier sicher jemanden gibt der sich besser als ich mit MySQL auskennt und die Frage beantworten kann. Ich habe bisher noch nichts dazu gefunden.

Vielen Dank schonmal.

Timon

--
Käsebrötchen
  1. Hallo,

    Nun ist aber in "user_fra" nur ein Eintrag vorhanden wenn die Frage mindestens in Feld 2 ist.

    nun möchte ich aber die Fragen aus Feld 1 auslesen. Da weiss ich aber leider nicht wie ich es machen soll dass ich Abfrage ob ein Eintrag nicht existiert.

    Du möchtest also alle Datensätze aus "fragen" für die es noch keinen Eintrag in "user_fra" gibt? Das ist eine Standardaufgabe für einen LEFT JOIN.

      
    SELECT f.f_id,f.frage,f.antwort  
    FROM fragen AS f LEFT JOIN user_fra AS u ON f.f_id = u.f_id  
    WHERE u.f_id IS NULL  
    
    

    Allgemein ist es meiner Meinung nach auch beim INNER JOIN günstiger, die JOIN-Syntax einzusetzen statt der WHERE-Umschreibung.

    viele Grüße

    Axel