Zuerst habe ich die folgende SQL-Anweisung:Kombinieren mehrerer Verbindung mysql Aussagen
SELECT * FROM members
WHERE username IN (
SELECT friend2 as username FROM list_friends
WHERE (friend1 = 'user' AND friend2 <> 'user')
UNION
SELECT friend1 as username FROM list_friends
WHERE (friend2 = 'user' AND friend1 <> 'user')
)
Der obige Code funktioniert perfekt. Es gibt alle Zeilen aus der Tabelle 'members' zurück, die der Liste der Freundesliste eines bestimmten Benutzers entsprechen. Diese Liste wird erstellt, indem die Tabelle list_friends für den angegebenen Benutzer durchsucht und der Name des Freundes aus der Spalte friend1 oder friend2 abgerufen wird.
Wie ich schon sagte, es funktioniert einwandfrei.
Next Ich habe die folgende SQL-Anweisung:
SELECT username,
(SELECT COUNT(*) FROM sites WHERE username = 'user')
+ (SELECT COUNT(*) FROM banners WHERE username = 'user')
+ (SELECT COUNT(*) FROM stream_updates WHERE username = 'user')
AS cnt from members WHERE username = 'user'
Dadurch werden die Zählungen der gegebenen Zeilen und Ausgabe der Gesamtsumme aller COUNT als Spalte cnt kombinieren.
Ich möchte diese beiden Aussagen kombinieren, damit ich ein Ergebnis erhalten kann, das Freund, cnt zurückgibt.
Beispiel Ausgabe wäre sehr einfach:
username | cnt
----------------------
a friend | 6525
diff friend | 983
yet again | 3485
ich dies leicht in zwei PHP-Loops laufen konnte, zuerst die Namen der Freunde aus der ersten Abfrage, und dann eine foreach verwenden und die zweite Abfrage ausführen In der Schleife der ersten Abfrage frage ich mich, ob es einen besseren Weg gibt, oder eine Möglichkeit, die Anweisungen anders zu kombinieren, um die obige Ausgabe zu erhalten.
Möchten Sie die Anzahl von der ersten Abfrage oder alle Zeilen? –
Die erste Abfrage gibt die "Freunde" zurück. Ich möchte dann, dass jeder Freund durch die zweite Abfrage geführt wird, um diesen Freund "cnt" zu bekommen. – Bruce
Um dies wirklich klar zu machen, bekommen wir eine "Freundesliste" für einen bestimmten Benutzer, dann zählen wir jeden Benutzer dieser Freundesliste die gesamten "Aktionen", die sie ausgeführt haben. – Bruce