2016-11-01 2 views
-1

1. TabellemySql Abfrage wählen

GroupID MemberID Name 
    1  1  ---  
    1  23  ---  
    2  1  ---  
    2  23  ---  
    2  24  ---  
    3  1  ---  
    3  24  ---  

2. Tabelle

ID MemberCount GroupName 
1  2   --- 
2  3   --- 
3  2   --- 

jetzt will ich

select the GroupID where MemberID = (1 and 23) and MemberCount = 2 

ich MySQL und kann nicht schneiden, so verwenden, wie ich Tun Sie dies

+1

'in (1,23)' MemberID? –

+0

nein, es wird Gruppen-ID 1,2,3 wählen, weil alle 1 oder 23 haben –

+0

oh. Sie brauchen also Benutzer mit BEIDEN dieser IDs? dann 'wo Mitglied in (1,23) im Grunde zählen (Mitglied) = 2 '. –

Antwort

2
SELECT a.groupID 
FROM table1 a 
, table2 b 
WHERE b.id = a.groupID 
AND b.MemberCount = 2 
AND a.MemberId in (1,23) 
HAVING COUNT(DISTINCT(MemberId)) >= 2; 
+0

ist es Rückkehr 1,1,3, aber ich brauche 1 –

+0

Es ist falsch, ich habe die Antwort aktualisiert, versuchen Sie es jetzt. –

0

Das sollte funktionieren ... Ich vermutete die Namen.

SELECT g.id 
FROM group g 
WHERE g.membercount = 2 
AND EXISTS (SELECT null FROM user_group ug WHERE ug.groupid = g.id AND ug.memberid = 1) 
AND EXISTS (SELECT null FROM user_group ug WHERE ug.groupid = g.id AND ug.memberid = 23) 
0
select GroupID from table1 inner join table2 on table1.GroupID=table2.ID where MemberCount=2 and MemberID in (1,23); 
+0

Diese Abfrage gibt nur 1 zurück –

+0

Der IN-Operator nimmt eine durch Kommas getrennte Liste von Werten, in Ihrer Antwort würden die "1 und 23" als ein Ausdruck behandelt, der die Antwort 1 ergibt - also ist der letzte Teil Ihrer Abfrage im Wesentlichen " Mitglieds-ID in (1) ". Dies führt dazu, dass die Abfrage sowohl 1 als auch 3 zurückgibt - nicht nur 1. – PaulF

+0

Entschuldigung nur ein einfacher Fehler –