2017-04-24 3 views
1

Tabelle: BenutzerMYSQL und Join-Abfrage

Color 
1 
2 
2 
2 
1 
3 

Tabelle: Farbe

ID  Name 
1  Orange 
2  Yellow 
3  Pink 
4  Blue 

Erwartetes Ergebnis

Color  Total 
Orange  2 
Yellow  3 
Pink  1 

Mysql Abfrage:

SELECT * FROM User LEFT JOIN Color ON Color.ID = User.Color; 

Wie kann ich mein erwartetes Ergebnis erhalten? Bitte hilf mir. und danke im voraus.

+3

Haben Sie etwas noch versucht, sich selbst? Stack Overflow ist kein kostenloser Hausaufgabenservice. –

+0

@TimBiegeleisen Ich habe versucht, aber es hat nicht funktioniert, also habe ich Frage gestellt. Ich möchte diese Plattform niemals als schlechten Zweck oder als Hausaufgabe verwenden. –

+0

Bitte geben Sie einen Code an, den Sie bereits ausprobiert haben. –

Antwort

0
SELECT c.NAME, COUNT(*) AS Total 
FROM Color c 
INNER JOIN User u ON (u.Color = c.Id) 
GROUP BY c.NAME; 
0

Dies wird Ihnen dabei helfen. Bruder :)

SELECT C.Name, COUNT(U.Color) as Total from Color C 
      LEFT JOIN User U 
      ON 
      U.Color = C.ID 
      GROUP by C.ID,C.Name 

Vielen Dank!

+0

können Sie erklären, warum Sie LEFT JOIN verwenden? weil es durch INNER JOIN und LEFT JOIN gemacht werden kann, ist teuer. –

+0

LEFT JOIN gibt alle Datensätze aus der linken Tabelle (Farbe) und die übereinstimmenden Datensätze aus der rechten Tabelle (Benutzer) zurück. Das Ergebnis ist NULL von der rechten Seite, wenn keine Übereinstimmung vorhanden ist. Deshalb müssen wir LEFT JOIN verwenden. In diesem Fall können wir auch INNER JOIN oder Simple JOIN anwenden. @AshutoshSIngh –

+0

Bitte gehen Sie durch es ist grundlegender Teil der Abfrageoptimierung http://stackoverflow.com/questions/2726657/inner-join-vs-left-join-performance-in-sql-server –

0

@Shah Rushabh Verwendung Gruppe von U.Color unten wie und Sie erhalten Ihr Ergebnis:

SELECT C.Name, COUNT(U.Color) as Total from user as U 
inner join color as C on 
U.Color = C.Id GROUP BY U.Color