ich vier Tische habenMysql wählen 4 Tabellen mit 3 Zählung
users ID display_name 1 Name1 2 Name2 3 Name3
Ein Benutzer Bücher zu Tisch Bücher hinzufügen
books book_id AddedByuserID 1 1 2 1 3 2 4 3
Auch kann ein Benutzer E-Books zu Tisch ebooks hinzufügen
ebooks ebook_id AddedByuserID 1 1 2 2 3 2 4 3
Jetzt kann ein Benutzer Bücher nur zu seiner Sammlung hinzufügen (nicht Ebooks)
collection userID book_id 1 1 1 2 1 3
Ich brauche eine Ausgabe wie folgt:
display_name books_added ebooks_added books_in_collection Name1 2 1 3 Name2 1 2 2 Name3 1 1 1
Dies ist, was bekam:
SELECT users.*, COUNT(DISTINCT collection.book_id) AS books_in_collection, COUNT(DISTINCT books.AddedByuserID) AS books_added, COUNT(DISTINCT ebooks.AddedByuserID) AS ebooks_added
FROM users LEFT JOIN collection ON users.ID = collection.userID
LEFT JOIN books ON users.ID = books.AddedByuserID
LEFT JOIN ebooks ON users.ID = ebooks.AddedByuserID
GROUP BY users.ID
ORDER BY display_name ASC
Der Benutzer display_name wird korrekt und auch die Sammlung Anzahl angezeigt, aber die beiden anderen Zählungen zeigen 1. Wenn ich DISTINCT entferne, sagt die Sammlung Count 86, und die zwei anderen Zählungen zeigen nichts.
Ich versuche zu verstehen, LINKE Join und lesen Tutorials, aber ich bin im Moment fest.
Und was ist mit 'Name3' passiert? –
Ich aktualisierte die Ausgabe. – grusl83