2016-09-08 3 views
0

Ich habe 2 Tabellen wie folgt.Filter zählen Tabelle Abfrage

Benutzer

id   name 
--------------- 
1   john 
2   raju 
3   manu 
4   raghu 

friendtable

id userid  recvId 
------------------------ 
1 1   2 
2 1   3 
3 2   3 
4 3   4 

Ist es möglich, den Benutzern von ihren Freunden aus diesen zählen zu filtern mich tables.Please zu helfen.

Für zB: - Bereich> = 3 führen wird: john, manu

Bereich> 3 und Reichweite < 2 führt: Raju Bereich < 2 Ergebnis: Raghu

+1

Ja. Es ist absolut möglich. – Strawberry

+0

Fragen Sie, wie oft jede user.id in den zwei Spalten der Fittentabelle existiert? – jarlh

+0

@jarlh ja. genau. – Preethy

Antwort

0
SELECT name FROM user a,friendtable b WHERE a.id=b.id AND b.recvid>=3 

SELECT name FROM user a,friendtable b WHERE a.id=b.id and b.recvid>3 AND b.recid<2 

SELECT name FROM user a,friendtable b WHERE a.id=b.id AND b.recid<2 
1

Führen Sie eine UNION ALL um alle IDs von Friendstable in einer Spalte zu erhalten. Verknüpfen Sie die Benutzertabelle mit diesem Ergebnis.

Machen Sie eine GROUP BY, stellen Sie HAVING ein, um zu entscheiden, was Sie zurückgeben möchten, z. mindestens 3 mal usw.

select u.name 
from users 
join (select userid as id from friendtable 
     union all 
     select recvId as id from friendtable) f 
    on u.id = f.id 
group by u.name 
having count(*) >= 3