Ich habe Schwierigkeiten, mich um MySQL Joins zu bekommen. Ich habe drei TabellenMySQL: Finden Sie Zeilen in der einen Tabelle und nicht die andere, finden Sie beide
-- events
id name
1 Event 1
2 Event 2
-- registrations
id event name
1 1 Alice
2 1 Bob
3 2 Alice
4 2 Charlie
-- scores
id event name score
1 1 Alice 10
2 1 Charlie 20
3 2 Alice 15
4 2 Bob 30
Für jedes Ereignis Ich versuche
- um herauszufinden, wie viele Menschen registriert (Zeilen in Registrierungstabelle), nicht aber eine Punktzahl (schließen Reihen in Partituren Tabelle) erhalten hat
- Wie viele Menschen hat einen neuen Score (Zeilen in der Tabelle Partituren), aber registrieren nicht (ausschließen Zeilen in Registrierungstabelle)
- Wie viele Menschen, die beide registrierte und bekam eine Punktzahl
Ich habe verschiedene Varianten ausprobiert von
SELECT *
FROM registrations r
LEFT JOIN scores s
ON r.event = s.event
WHERE s.event IS NULL
AND r.event = 1
aber ich bin nicht sicher, was soll ich auf beitreten: event
oder name
aber weder sind null und ich scheine nie, dass ich die richtigen Zahlen zu erhalten freu zum. Das Ergebnis am Ende sollte wie sein
name reg_only score_only reg&score total
event Event 1 1 1 1 3
Sie versucht haben, um die Tabelle zu Ihrer * Erklärung hinzu? "select r. * from registrations r ....." Das Problem könnte sein, dass die Ereignisspalte in mehreren beteiligten Tabellen vorhanden ist. – Henkealg