2012-03-28 27 views
0

Ich habe zwei Tabellen:einschließlich Zählung

Veranstaltungen und events_actions

events columns: 

event_id 
user_id 
event_name 

events_actions columns: 

action_id 
user_id 
event_name 

sie haben ein gemeinsames Feld in beiden Tabellen die event_name

Ich möchte alle Veranstaltungen für einen Benutzer zeigen, aber nur, wenn sie einige event_actions mit ihnen verknüpft haben (verbunden durch event_name)

Ich kann dies tun, indem Sie alle Ereignisse von user_id ziehen und dann vor der Anzeige stellen Sie sicher gleicher Name event_actions> 0 aber gibt es eine Möglichkeit, dies in einer SQL-Abfrage zu tun? nicht event_name

Ich bin mit MySQL

Antwort

1
select * 
from events ev 
where exists (select 1 from event_actions ea where ev.event_name = ea.event_name) 

oder

select ev.event_name,count(ea.action_id) 
from events ev,event_actions ea 
where ev.event_name = ea.event_name 
group by ea.event_name 
having count(ea.action_id) > 0 
+0

@ Kappa Vielen Dank –

+0

Sie sind willkommen :) – kappa

1

Zunächst einmal sollte es event_id auf dem Tisch events_actions, sein. Nun, unter der Annahme, dass event_name eindeutig zuzuordnen sind, können Sie diese Abfrage tun:

SELECT E.user_id, E.event_name 
FROM dbo.events E 
INNER JOIN (SELECT DISTINCT event_name, user_id FROM dbo.events_actions) EA 
ON E.user_id = EA.user_id AND E.event_name = EA.event_name 
+0

@ Lamak Danke für den Rat, seine geschätzt –