Wie Sie eine Unterabfrage in einer anderen Unterabfrage mit drei Tabellen in mysql?
Ich habe drei Tabellen in meiner Datenbank finden Sie die folgende Struktur :
Benutzer
uid | fname | date_joined
---------------------------------
1 | john | 2013-08-25 01:00:00
2 | rock | 2013-08-26 01:00:00
3 | jane | 2013-08-27 01:00:00
Fragen
qid | uid
----------
1 | 1
2 | 1
3 | 2
4 | 3
5 | 3
6 | 1
7 | 1
8 | 2
9 | 2
Anhänger
fid | qid
---------
1 | 2
2 | 1
3 | 2
4 | 1
5 | 2
6 | 3
7 | 2
user-Tabelle enthält alle Benutzer-bezogenen Felder
Fragen Tabelle enthält alle in Frage stehenden Daten mit der foreign key-uid
Anhänger-Tabelle speichert die Informationen, wie viele mal eine Frage gefolgt
Was ich will, meine Abfrage ist :
unique uid,
fname
question count for each user
follower count for each user
Ich geschrieben habe eine Abfrage und seine Arbeitsmethoden in Ordnung und die Rücksendung der Datensätze, wie ich will, aber der follower count ist immer 0. Hier ist meine Abfrage :
SELECT
u.uid, u.fname, u.date_joined ,
(SELECT COUNT(*) FROM questions WHERE questions.uid = u.uid) AS question_count,
(SELECT COUNT(*) FROM followers WHERE followers.qid IN (
SELECT GROUP_CONCAT(qid) FROM questions WHERE questions.uid = u.uid
)
) AS follow_count
FROM epc_user AS u
ORDER BY follow_count DESC, question_count DESC, date_joined DESC
Ich habe versucht, mehrere verschiedene Kombinationen, aber keiner von Ihnen arbeitete, vielleicht Schreibe ich eine falsche Abfrage oder nicht möglich, verwenden Sie eine Unterabfrage in einer anderen Unterabfrage, was auch immer es sein mag. Ich möchte nur wissen, ob das möglich oder nicht und wenn möglich
InformationsquelleAutor Murtaza Malek | 2013-08-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
GROUP_CONCAT
wird ein string zurückgegeben, aber dieIN
operator arbeitet mit eine Reihe von Werten, und nicht mit einem string, so dass Sie haben, um so etwas wie dasfiddle: http://sqlfiddle.com/#!2/8cd10/2
Kein problem, aber er hat die Chance verpasst, aus
order by clause
unddate_joined
Spalte, können Sie das Kontrollkästchen vollständige Abfrage hierja, du hast Recht. Stackoverflow ist entwickelt, um die richtige Lösung und das ist, was Sie getan haben. Danke.
snyder können Sie mir helfen, herauszufinden, Rang für jede Zeile? Ich habe versucht, die mysql - @Variablen zu bekommen, Rang aber als unsere Abfrage ist die Gruppierung der Werte, die Rangfolge ist nicht wie erwartet funktioniert.
für die Gruppe von gegeben durch slaakso Abfrage, die Sie verwenden können, dieser und meine Antwort können Sie dieser
InformationsquelleAutor Ashish Gaur
Können Sie verwenden joins, um das Ergebnis zu erhalten. Keine Notwendigkeit für Unterabfragen:
InformationsquelleAutor slaakso