Ich habe Probleme mit Unterabfragen in MySql. Ich habe eine Tabelle mit Benutzergruppen. Die Spalten sind ID, Name und die Eigenschaften mit einem Kommentar jede Zeile beschreibt: (Id ist INT, Namen VARCHAR, alle anderen TINYINT (1) (boolean, das ist)Korrelierte Unterabfragen in MySql - wie äußere Abfrage zuerst ausgewertet wird?
ID | Name | login | post | manage
1 user 1 0 0
2 poster 1 1 0
3 admin 1 1 1
Mein Ziel ist es, in der Lage sein Liste der Benutzergruppen-Eigenschaften (Login, Post und verwalten oben) und die Anzahl der Benutzergruppen, die jede Eigenschaft (3, 2 bzw. 1)
Diese Abfrage funktioniert (aber natürlich zählt die Login-Spalte jedes Mal).
SELECT @colname:=cols.column_name,cols.column_comment,
(SELECT COUNT(*) FROM db.usergroups WHERE login=1) AS num_users
FROM information_schema.columns AS cols
WHERE TABLE_SCHEMA='db' AND TABLE_NAME='usergroups' AND column_type='tinyint(1)';
Dies funktioniert nicht (num_users ist al 0 Wege)
SELECT @colname:=cols.column_name,cols.column_comment,
(SELECT COUNT(*) FROM db.usergroups WHERE cols.column_name=1) AS num_users
FROM information_schema.columns AS cols
WHERE TABLE_SCHEMA='db' AND TABLE_NAME='usergroups' AND column_type='tinyint(1)';
Dies weder (num_users ist immer 0)
SELECT @colname:=cols.column_name,cols.column_comment,
(SELECT COUNT(*) FROM db.usergroups WHERE @colname=1) AS num_users
FROM information_schema.columns AS cols
WHERE TABLE_SCHEMA='db' AND TABLE_NAME='usergroups' AND column_type='tinyint(1)';
Gibt es eine Möglichkeit, dies zu erhalten zu arbeiten? Das ist - zuerst die äußere Aussage zu bewerten?
-
Vielen Dank für jede Hilfe!
/Victor
Danke, aber das Zählen der Zeilen ist nicht wirklich das Problem - das Problem ist, dass ich (?) Den Kommentar von information_schema holen muss (was als Beschreibung oder "hübscher Name" verwendet wird) und in derselben Abfrage wollen die Zählung hinzugefügt. Danke trotzdem! – Victor