SQL

oraclin25

Erfahrenes Mitglied
Hallo zusammen,

ich habe folgende 3 Tabelle:

Code:
ID       Type

1        technical
2        non-technical

Code:
School-Type         Subject

technical           math
technical           physic
non-technical       english

Code:
Student           Subject 

Adrian            math
Lola              english
Adrian            physic

Ich möchte gerne per SQL folgendes erzeugen:

Code:
Type           #

technical      1
non-technical  1

Also, die Anzahl der Studenten nach Schultyp. Also, an technical steht eine 1, da lediglich Adrian diesen Schultyp besucht. Ich weiss, dass der SQL-Code auf jeden Fall distinct auf Student enthölt, aber ich komme gerade nicht weiter. Hat jemand vielleicht eine Idee?
Vielen Dank.

Schöne Grüße aus Rheinland,
Eure Ratna:)
 
Ahoi Ratna.
Ich rate mal du arbeitest mit MySQL.
Weiter rate ich mal dass die Tabellen die Namen "typ", "fach" und *besucht" haben.
Des weiteren gehe ich davon aus, dass du alle Einträge der Tabelle "typ" haben möchtest auch wenn keine Studenten dazu eingetragen sind.

SQL:
SELECT
	t.`type`,
	COUNT(DISTINCT b.student)
FROM
	typ AS t
	LEFT JOIN fach AS f
		ON t.`type` = f.school_type
	LEFT JOIN besucht AS b
		ON f.subject = b.subject
GROUP BY
	t.`type`
 
Zuletzt bearbeitet von einem Moderator:
vielen Dank lieber Yaslaw,

es hat auf Anhieb funktioniert. Ich freue mich soo...

Viele Grüße aus Rheinland,
Eure Ratna
 
Dann solltest du noch versuchen zu verstehen was da steht. Du kannst auch fragen wenn du etwas davon nicht verstehst
 
Yaslaw hat dir ja schon bereits gezeigt, wie man sowas macht.

Nur noch so ein kleiner Hinweis am Rande. Wenn ich mir so deine Tabellen anschaue, dann könnte man das ganze noch etwas sauberer entwerfen. Mit diesem Design hast du keine Chance, wenn es plötzlich zwei Studenten mit dem Namen "Adrian" gibt. In der ersten Tabelle hast du ja bereits eine ID, aber mit der machst du ja gar nichts, schade. Google mal die Themen Dritte Normalform (3NF), Primärschlüssel/Fremdschlüssel und Kardinalität.
 
vielen lieben Dank Yaslaw, BaseBallBatBoy.. Ich habe soweit verstanden, kam nur nicht drauf, dass mit mit Hilfe von left join das Problem lösen kann.
 

Neue Beiträge

Zurück