2017-10-07 2 views
-1

Ich habe eine Reihe von Tabellen und ich weiß nicht wirklich, wie man einige spezifische Informationen mit ihnen anzeigen. Die Tabellen haben folgende Struktur:Ich kann nicht herausfinden, wie man eine Abfrage schreibt

Ich versuche alle Profs anzuzeigen, die noch keinen Kurs zugewiesen haben. Ich schrieb die folgende Abfrage, aber es funktioniert nicht richtig:

SELECT p.name 
    FROM profs p 
    JOIN teaching t 
    ON p.id_profs <> t.id_profs; 

Wie kann ich das beheben?

+0

Ich habe auch versucht: SELECT p .name FROM profs p JOIN Unterricht t ON p.id_profs = t.id_profs WHERE p.id_profs <> t.id_profs; Es funktioniert auch nicht. – AndrB

+2

Alle grundlegenden Buch oder Anfänger Tutorial wird ausreichen – Strawberry

Antwort

0

Sie können die Vorteile aus der Tatsache ziehen, dass eine linke beitreten werden alle Datensätze aus Ihrer FROM-Klausel verwenden (das heißt einen Eintrag für jeden Professor) und dann kommen Sie auf alle Datensätze aus der linken Tabelle JOIN. Daher wird jeder Professor, der keinen Kurs zugewiesen hat, keine course_id für seine Aufzeichnung haben. Geben Sie das in der WHERE-Klausel an und Sie sind fertig.

SELECT p.name 
FROM profs p 
LEFT JOIN teaching t ON t.profs_id = p.profs_id 
WHERE t.course_id IS NULL 
+1

Vielen Dank! Es funktionierte! Du hast es klarer gemacht, um es zu verstehen! : D – AndrB

0
SELECT 
Profs.name 
FROM profs, teaching 
WHERE profs.profs_id = teaching.prof_id 
    AND course_id ISNULL 
0

This question erklärt die Art von Verknüpfungen können Sie erreichen und wie würden Sie sie erreichen. In diesem Fall möchten Sie eine LEFT OUTER JOIN, wo Null.

Dieses Bild wird von Google Bildsuche (mit freundlicher Genehmigung von SQL Authority) erklärt dies

enter image description here

bildhaft Als Ergebnis Ihre Abfrage wie funktionieren würde:

SELECT p.name 
    FROM profs p 
    LEFT OUTER JOIN teaching t 
    ON p.id_profs = t.id_profs 
    WHERE t.id_profs IS NULL; 
Verwandte Themen