Dies scheint eine ziemlich häufige Frage hier zu sein, obwohl ich nicht in der Lage war, eine Lösung zu finden.mysql left join gibt keine Werte zurück
Ich habe drei Tabellen, matchup, matchup_options, matchup_votes
Auf schaffen, ein matchup erstellt wird, "n" matchup_options erstellt und matchup_votes sind leer, bis eine Abstimmung hinzugefügt wird.
Meine Abfrage gibt nur einen Wert zurück, obwohl ich zwei matchup_options habe, WEDER irgendetwas in der Tabelle matchup_votes. (Diese sollten 0 zurück, bis ein aktueller Eintrag Theres, das richtig zu zählen beginnen würde)
SELECT matchup.matchupID, matchup_option.player_id, player.name, player.abr, count(matchup_vote.player_id) votes FROM matchup
INNER JOIN matchup_option ON matchup_option.matchupID= matchup.matchupID
INNER JOIN player ON player.player_id = matchup_option.player_id
LEFT JOIN matchup_vote ON matchup_vote.player_id = matchup_option.player_id
GROUP BY matchup_vote.player_id;
Und die Rückkehr:
matchupID player_id name abr votes
111 249 Name SF 0
Erwarteter Ertrag:
matchupID player_id name abr votes
111 249 Name SF 0
111 331 Name2 JS 0
Thank you!
Ja das hat definitiv funktioniert. Wir wollen also im Wesentlichen den gesamten Datensatz gruppieren, nicht nur das einzelne Feld? – Nihat
@Nihat: Nicht der gesamte Datensatz, nein. Nur was relevant ist. Das bedeutet normalerweise alles in der Select-Anweisung oberhalb der Aggregatfunktion. Denke darüber nach, wie du die Zählgruppen im echten Leben brechen würdest. Es ist das gleiche. Wenn Sie die Autos viel zählen möchten, zählen Sie sie als eine Gruppe. Sie können sie dann in Gruppen zerlegen, um was für ein Auto es sich handelt, und dann noch weiter nach Farbe. – Jacobm001
@Nihat: Wenn Sie das Problem gelöst haben, denken Sie bitte daran, die Antwort zu akzeptieren, indem Sie auf das Kontrollkästchen klicken :) – Jacobm001