2017-03-12 7 views
0

Ich habe drei Tabellen:viele zu viele Beziehungen Tabellen

  • Studenten: StudentID , Vorname , Nachname, major, Schuljahr ,

  • Kurse: studentid, Kursid , coursename , Abteilung,

  • students_courses: Vorname , StudentID , courseid ,

Ich brauche eine SQL-Abfrage zu schreiben, die zeigt, welche Studenten nehmen die Kurse Ein Student sollte in der Lage sein, sich für mehr als einen Kurs anzumelden und ein Kurs sollte von mehr als einem Teilnehmer belegt werden können.

Die Abfrage, die ich erstellt habe, aber ich bekomme einen Fehler, kann jemand helfen.

select 

students.firstname as 'name', 
GROUP_CONCAT(courses.coursename) as 'course name' 

from students 
join students_courses on students.studentid = students_courses.studentid 

join courses on courses.courseid = students_courses.Courseid 

group by students.Firstname 

order by courses.coursename 
+0

Erstens: Warum verwenden Sie Group Concat? 2 Was ist der Fehler, den Sie bekommen? –

+0

Ich bekomme keinen Fehler, das tut mir leid. die Abfrage läuft nicht wie es sollte – Rafael123

Antwort

0

Ihre Tabellen Struktur scheint mir falsch.

Tabelle Studenten: ok Tabelle Kurse: STUDENT_ID Tabelle student_courses entfernen: student_name

Dann fragen Sie die Daten auf diese Weise

SELECT * FROM students AS s LEFT JOIN student_courses AS sc ON s.id=sc.student_id LEFT JOIN courses AS c ON c.id=sc.course_id 

Fügen Sie die notwendigen entfernen WHERE-Klauseln, wenn nötig.

Die Abfrage zeigt alle Kurse aller Benutzer an. Es druckt auch Benutzer ohne Kurse.

+0

Hallo, können Sie bitte helfen, ich bin neu mit MySQL und Schreiben von Abfragen. Ich gebe die Informationen ein, die Sie mir gegeben haben, und sie sagt, Klausel ist mehrdeutig – Rafael123

+0

Sie müssen nicht "WHERE-Klausel" schreiben, aber abhängig davon, was Sie WHERE student_id = Variable oder WHERE course_id = Variable und Variable anzeigen möchten natürlich die ID der Ressource, die Sie versuchen zu holen und Sie sind interessiert jn. –

+0

Ich muss die Abfrage schreiben und bekomme einen Fehler. Wie kann ich das beheben? – Rafael123

Verwandte Themen