2016-05-04 17 views
1

Ich habe fünf Tabellen: 1. Kurse 2.departmetns 3.students 4. enroll_courses 5.resultsMySQL Query: Wie schreiben Inner Select Join-Abfrage

Departments has id 
Courses has id, department_id 
Students has id,department_id 
Enroll_courses has id, courses_id,students_id 
Results has id, courses_id,students_id 

Ich habe courses.name auszuwählen, die in sind inegle_courses-Tabellen, aber nicht in der Ergebnistabelle.

Ich habe die Abfrage geschrieben, ich konnte die genaue Antwort nicht erhalten. Wenn mir jemand helfen kann, die Lösung zu finden.

Abfrage:

SELECT courses.name 
FROM courses 
    JOIN departments ON courses.department_id = departments.id 
    JOIN students ON departments.id = students.department_id 
WHERE students.id = 9 
    AND courses.id IN (SELECT course_id FROM enroll_courses) 
+0

uns das Design Ihrer Tabellen Lassen Sie wissen und wir werden helfen können. Bearbeiten Sie die ursprüngliche Frage, antworten Sie nicht in den Kommentaren. –

+0

Verwenden Sie MySQL oder MS SQL Server hier? Markieren Sie keine nicht betroffenen Produkte. – jarlh

+0

Sie geben an, dass Ihre Tabelle "Courses" die ID "department_id" aufweist, dass Sie jedoch auf "courses.name" verweisen. Aktualisieren Sie es mit allen Feldern und wir haben mehr Chancen. –

Antwort

1

Es ist ein bisschen blinde schießen, da Sie jeden DDL's nicht vorsah, aber ich gehe davon results Tabelle eine course_id Spalte hat, wenn nicht, um es in die Beziehung zu ändern. Sie können dies tun, mit EXISTS() und NOT EXISTS():

SELECT courses.name 
FROM courses 
    JOIN departments ON courses.department_id = departments.id 
    JOIN students ON departments.id = students.department_id 
WHERE EXISTS(SELECT 1 FROM enroll_courses ec WHERE ec.course_id = courses.id) 
    AND NOT EXISTS(SELECT 1 FROM results r WHERE r.course_id = courses.id) 
    AND students.id =9 
+0

Es gibt ein Problem mit der Syntax Fehler in Ihrer Abfrage, ich konnte es nicht bekommen. Können Sie meinen aktualisierten Qus bitte überprüfen? – User57

+0

@RandeepSingh Ich habe dir gesagt, dass du es ausziehen sollst. Versuche es jetzt. – sagi

+0

Ich renne mit Ihrer obigen Abfrage früher und habe 3 Fehler. 3 Fehler wurden während der Analyse gefunden. 'Nicht erkanntes Schlüsselwort. (nahe "NICHT" an Position 285) Nicht erkanntes Schlüsselwort. (nahe "EXISTS" bei Position 289) Unerwartetes Token. (in der Nähe von "(" auf Position 295) ' – User57