2017-03-22 5 views
-1

Ich habe zwei Tabellen in meiner DB, dbl1_profiletype und dbl1_users.aus zwei verschiedenen Tabellen MySQL und Bestellung

In dbl1_profiletype Ich habe die Spalten mit dem „id“ und „namen“

id__name 
3___red 
5___blue 
6___white 
7___green 
8___brown 

Und in den dbl1_users Ich habe die Spalten mit dem „Benutzer-ID“ und „Profil“, wobei der „Profil“ Wert ist identisch mit dem Wert "id" aus der Tabelle dbl1_profiletype.

dbl1_users

Was ich zeigen will, ist eine Tabelle wie die im Bild unten:

TOTAL_MEMBERS

Also, was ich brauche, ist eine Liste mit der Summe Zahl der Mitglieder zurück durch Profiltyp, sortiert nach dem Profiltyp mit mehr Mitgliedern und dem Profiltyp mit zuletzt geringerer Mitgliederzahl. Ich habe versucht, Namen und COUNT (Profil) wie das SELECT:

SELECT name, COUNT(profile) 

FROM dbl1_profiletype, dbl1_users 

GROUP BY profile 

Aber es funktioniert nicht.

Und ich habe auch versucht:

SELECT name, COUNT(profile) 

FROM dbl1_profiletypes, dbl1_users 

GROUP BY profile 

Ohne Erfolg zu.

Ich bin Noob in MySQL, aber ich vermute, dass es einfach etwas zu erreichen sein kann, aber das ist für mich unbegreiflich im Moment.

Jede Hilfe sehr geschätzt wird

+0

Wie unterscheiden sich die beiden Versuche? –

+0

Bitte senden Daten als formatierten Text, [nicht Screenshots] (http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when-asking -a-Frage/285557 # 285557). Außerdem treten Sie den Tabellen ohne Join-Bedingungen bei – Aleksej

+0

Sorry mein Fehler. Der andere Versuch, den ich machte, war, die Join-Syntax zu verwenden. Aber wie ich schon sagte, ich bin in Mysql noob. – legolax

Antwort

1

Dies ist, was ich mit den Informationen, die von Ihnen zur Verfügung gestellten kam. Ich glaube, Sie vermissen die JOIN Bedingungen,

SELECT DBL1_PROFILETYPE.NAME MEMBERS 
    , COUNT(*) TOTAL 
FROM DBL1_USERS 
    JOIN DBL1_PROFILETYPE 
     ON DBL1_USERS.PROFILETYPE = DBL1_PROFILETYPE.ID 
GROUP BY DBL1_PROFILETYPE.NAME 
+0

Das ist es! Die einzige Sache ist, dass die Reihenfolge nicht korrekt ist. Ich brauche den höchsten Wert zuerst und den niedrigeren Wert zuletzt. Wie das Bild, das ich in meinem Beitrag zeige. 4 Rot, dann Grün 2, Blau 2, Braun 1, weiß 0 – legolax

+0

Ok, ich herausgefunden, wie es zu tun. ORDER BY TOTAL DESC. – legolax

Verwandte Themen