2017-09-09 3 views
1

Ich versuche, ein Voting-Skript zu machen, wo Menschen Lehrer bewerten können, aber ich habe ein Problem.Wählen Sie Ergebnisse, wo der Wert der Spalte nicht gleich dem Wert der anderen Spalte von anderen Tabelle ist

Ich möchte, dass das Skript nur Lehrer anzeigt, die Sie noch nicht bewertet haben, weil es nicht sinnvoll ist, immer wieder dasselbe zu bewerten.

Ich habe 2 Tabellen für diese: Lehrer und Bewertung

Von der „Lehrer“ Tabelle, ich brauche die Werte von teacherId, teacherName und teacherImage

Von der „Bewertung“ Tabelle, möchte ich Vergleichen Sie den Wert von userId mit der ID des angemeldeten Benutzers (Ich habe eine Variable mit dem Wert des Benutzers)

Aber zum Testen verwende ich einfach die ID "2".

Wenn das erledigt ist, möchte ich, dass es jeden Lehrer zeigt, über den dieser Benutzer noch nicht abgestimmt hat. Ich habe viele Wege ausprobiert, aber keiner von ihnen hat so funktioniert, wie ich es wollte.

Meine letzte Frage ist:

SELECT t.teacherId, t.teacherName, t.teacherImage, r.userId, r.teacherId 
FROM teacher t, rating r 
WHERE r.userId = 2 AND t.teacherId != r.teacherId 

Wenn jemand eine Idee hat, wie ich dies zu arbeiten, konnte ich es schätzen würde.

Vielen Dank im Voraus.

Antwort

1

Es gibt keine Bewertungsaufzeichnungen für diese Lehrer, die nicht von einem bestimmten Benutzer bewertet wurden. Sie können die Liste der Lehrer abrufen, die vom Benutzer bewertet wurde, und dann NOT IN verwenden.

SELECT teacherId, 
     teacherName, 
     teacherImage 
    FROM teacher 
WHERE teacherId NOT IN (SELECT teacherId 
          FROM rating 
          WHERE userId = 2) 
Verwandte Themen