2017-08-29 1 views
0

Ich habe zwei Tabellen:MySQL - verbinden Sie zwei Tabellen, Gruppen- und zählen

reviewStatusPhases - id|name 

und

userPhase - id|reviewStatusPhase_id|user_id|created_at|updated_at 

Die reviewStatusPhases Tabellensätze (Active eingefügt haben, inaktiv, auf Pause, beendet. ..) und userPhase ist leer.

Die Tabellen werden über

userPhase.reviewStatusPhase_id = reviewStatusPhases.id 

12.59 verbunden.

Ist es möglich, dass in einer Abfrage alle reviewStatusPhases, und wie viele Benutzer in jeder Phase sind?

Active (0 Users) 
Inactive (0 Users) 
On Pause (0 Users) 
Terminated (0 Users) 
+0

Sure - LEFT JOIN reviewStatusPhases mit userPhase (so dass Sie immer noch Datensätze für diese Phasen erhalten, die keine Benutzereingaben für noch vorhanden ist), GROUP BY Die Phasen-ID und COUNT ... – CBroe

Antwort

2

Ich mache einige Annahmen hier (zB INNER JOIN gegen LEFT JOIN in der Join und DISTINCT in der Zählung), aber es klingt wie Sie nur

wollen: In diesem Fall werde ich so etwas wie dieses erhalten
SELECT reviewStatusPhases.name, COUNT(DISTINCT userPhase.user_id) 
FROM userPhase INNER JOIN reviewStatusPhases 
    ON userPhase.reviewStatusPhase_id = reviewStatusPhases.id 
GROUP BY reviewStatusPhases.name 
1

verwenden LEFT JOIN wie folgt:

SELECT COUNT(m.UserId) FROM Table1 m 
LEFT JOIN Table2 k ON k.StatusId = m.StatusId 
WHERE k.Status = 'Inactive' 

Sie bequem die der Status Spalte, um die Nutzer zu verfolgen und deren ac verwenden können Aktivitäten. In Ihrem Fall, ReviewStatus.

+0

Für den Multi-Status zu einer Zeit, können Sie 'k.Status IN ('aktiv', 'inaktiv')'. Obwohl die zweite Antwort mit "GROUP BY" angemessener wäre. –

1

Ich hoffe, dass die folgenden hilfreich sein

SELECT RPS.Name, COUNT(UP.user_id) 
FROM reviewStatusPhases RPS 
LEFT OUTER JOIN userphases UP ON RPS.id = UP.reviewStatusPhase_id 
GROUP BY RPS.Name 
ORDER BY RPS.Name 
2

Abfrage wird wie folgt dar:

SELECT r.name as `name`, count(u.id) as `count` FROM reviewStatusPhases r LEFT OUTER JOIN userPhase u ON r.id = u.reviewStatusPhase_id GROUP BY r.name 
  1. linke äußere Verknüpfung mit reviewStatusPhases auf der linken Seite alle Namen zu zeigen.
  2. Gruppe nach Namen der ÜberprüfungStatusPhases.
  3. Anzeige reviewStatusPhases Name und Anzahl der Benutzer-ID (zu vernachlässigen Nullwerte)
Verwandte Themen