2017-03-22 6 views
0

DB TablesSQL-Joins. Effiziente Abfrage

Was ich aus den obigen Tabellen benötigen, sind:

1. Alle Benutzerdaten zu einer ID entspricht.

2. Anzahl der Post, die er gemacht hatte.

3.Number von Anhängern er hat und die Anzahl der Menschen, die er folgt (followid = user1.user2 [User1 ist followin user2].

4.Let sagen user1 ist benutzer2 Profil Visting, ich brauche, um herauszufinden, falls es zu followid benutzer1 entsprechen, und benutzer2 dh user1.user2 in follow_detail.

ich habe 1 gelöst und 2 durch Tabellen (post_detail und user_detail) und 3 durch Verwendung einer separate Abfrage (wenn-dann in mysql) verbinden. Ich frage mich, ob ich das alles in einer SQL-Abfrage bekommen kann.Dies wird von der Profil-API zurückgegeben, so dass die DB mit mehreren Abfragen nicht gut sein sollte Wenn DB-Design nicht gut ist h Damit das alles über Daten in einer Abfrage bekommt, kann ich es ändern.

Antwort

1

Mithilfe von Unterabfragen können Sie die Ergebnisse in einer einzigen Abfrage kombinieren. Ob das effizienter ist als mehrere einfache Abfragen - ich bin mir nicht so sicher. Sie müssen es testen.

select ud.*, 
     (select count(*) 
     from post_detail where post_detail.user_id=ud.user_id) as post_count, 
     (select count(*) 
     from follow_detail where follow_detail.following=ud.user_id) as follower_count, 
     (select count(*) 
     from follow_detail where follow_detail.follow=ud.user.id and follow_detail.following=...) as follower_user 
from user_detail ud 
where ud.user_id=... 

Sie müssen die Benutzer-IDs anstelle des ... bereitzustellen. Ich habe mit der letzten Unterabfrage ziemlich raten lassen, da nicht klar war, was man dort sehen möchte.

+0

Von 4 was ich will ist: Angenommen, auf Facebook, wenn ich Ihr Profil besucht, dann sollte ich wissen, wenn ich dich folge oder nicht. Sagen wir meine userid = 123456 und Ihre ist 234567 dann muss ich finden, wenn in meiner follow_detail Tabelle 123456.234567 (ein Boolean, um zu benachrichtigen, wenn ich dich folge oder nicht). –

+0

Dank dir.Ich habe es (die vierte). Danke Kumpel. –