Reputation: 312
SELECT *
FROM Activity AA
WHERE AA.act_id IN
((SELECT A.act_id
FROM Activity A
WHERE A.user_id = 'lhfcws')
UNION
(SELECT J.act_id
FROM Joinin J
WHERE J.user_id = 'lhfcws'))
ORDER BY AA.act_time
ERROR MESSAGE: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
'UNION (SELECT J.act_id FROM Joinin J WHERE J.user_id = 'lhfcws')) ORDE' at line 7
Activity(act_id, user_id, act_name)
Joinin(act_id, user_id)
Upvotes: 6
Views: 13571
Reputation: 60493
Hmm, don't think you need such a subquery
select * from Activity a
where a.user_id = 'lhfcws'
and exists (select null from Joinin j
where a.user_id = j.user_id);
sould do the same
maybe you need one more check
select * from Activity a
where a.user_id = 'lhfcws'
and exists (select null from Joinin j
where a.user_id = j.user_id
and a.act_id = j.act_id);
Acording to @Jonathan Leffler's (true) remark
select * from Activity a
where a.user_id = 'lhfcws'
or exists (select null from Joinin j
where j.user_id = 'lhfcws'
and a.act_id = j.act_id);
Upvotes: 3
Reputation: 6882
The reason for your error is the parens around the select statements. You should write it as:
SELECT *
FROM Activity AA
WHERE AA.act_id IN
(SELECT A.act_id
FROM Activity A
WHERE A.user_id = 'lhfcws'
UNION
SELECT J.act_id
FROM Joinin J
WHERE J.user_id = 'lhfcws')
ORDER BY AA.act_time
But do go over @Raphaël Althaus ideas for improving your query.
Upvotes: 8