2016-08-20 2 views
1

Ich habe zwei Tabellendaten und Benutzer. Ich muss zählen von Daten-> Wert und zeigen nur größte Anzahl und Benutzer-> Name.So erhalten Sie die Anzahl der Daten mit mysql

zB User_id 2: Zählung 3

ich eine Abfrage versucht, aber es ist falsch.

SELECT data.value, user.name 
FROM data 
INNER JOIN user 
ON data.value = user.id 
WHERE data.field = 'user_id' 

DATA

id order_id field  value (id of user table) 
1  1  user_id  1 
2  2  user_id  3 
3  3  user_id  2 
4  4  user_id  2 
5  5  user_id  1 
6  6  user_id  2 

USER

id name 
1 foo 
2 joo 
3 peter 
+1

Was ist Ihre erwartete Ausgabe? Möchten Sie Daten mit user_id filtern? – Sadikhasan

+0

@Sadikhasan Erwartetes Ergebnis ist Benutzer_ID 2 hat drei Einträge in der Datentabelle. Das Ergebnis wäre, dass user_id 2 3 zählt. –

Antwort

0
  • Daten über Benutzer-Datensätze abhängig ist und jeder Benutzer hat multile zugehörigen Zeilen in der Datentabelle, müssen wir Verwenden Sie GROUP BY.
  • Wir müssen den Benutzer mit der maximalen Anzahl finden. Dazu wird die Zählspalte in absteigender Reihenfolge mit ORDER BY Zählern DESC und die erste Zeile mit der max. Der Wert wird mit LIMIT 0, 1 extrahiert.

Versuchen Sie folgendes:

SELECT data.value, user.name, data.field, COUNT(*) as count 
FROM data 
INNER JOIN user 
ON data.value = user.id 
GROUP BY user.name 
HAVING data.field = 'user_id' 
ORDER BY count DESC 
LIMIT 0,1 

Ausgang:

value | name | field | count 
    2 | john | user_id | 3 
+0

Vielen Dank. Echt super! –

-1

Nach Ihrem Beispiel Anforderung, können Sie etwas tun können: -

SELECT data.value AS user_id, 
data.field, 
COUNT(*) AS count 
FROM data 
INNER JOIN user 
ON data.value = user.id 
GROUP BY user.name 
HAVING data.field = 'user_id' 
ORDER BY count DESC 
LIMIT 0 , 1 
+0

Bitte bieten Sie einen tröstlichen Kommentar wie OM, um Ihre Antworten weiter zu erklären. Und formatieren Sie Ihre Ausgabe, so müssen wir nicht. – Drew

+0

Und wieso jemand einen relativ neuen Benutzer ablehnen muss, bekomme ich es nicht. – Drew

+0

Ich antworte nur nach Sam Anforderung, ich möchte nicht, dass jemand meine Antwort abstimmt oder abstimmt. @Drew –

0

Verwendungsgruppe von

select count(value) from tablename group by value; 

dies wird Ihnen 3 geben zählen nach Ihren Tisch

Verwandte Themen