Reputation: 6658
SELECT * FROM event JOIN user ON event.event_user_id=user.user_id
WHERE ((event.event_date BETWEEN '2011-03-01' AND '2011-04-01' )
AND user.user_id in (SELECT user_id FROM user_map
WHERE (user_map.user_id_map=1 AND user_map.user_relation<=7)));
This is working fine in Toad/MYsql but fails when I do it with prepared statement in java + mysql driver as
SELECT * FROM event JOIN user ON event.event_user_id=user.user_id
WHERE ((event.event_date BETWEEN ? AND ? )
AND user.user_id in (SELECT user_id FROM user_map
WHERE (user_map.user_id_map=? AND user_map.user_relation<=?)));
...
pstmt.setDate(1, <sqlDate>);
pstmt.setDate(2, <sqlDate>);
pstmt.setLong(3, <int>);
pstmt.setLong(4, <int>);
pstmt.executeQuery();
Upvotes: 0
Views: 114
Reputation: 207912
It is not closely related to problem but the query is not efficient and can be improved
SELECT *
FROM event
JOIN USER
ON event.event_user_id = USER.user_id
JOIN user_map
ON user_map.user_id = USER.user_id
AND user_map.user_id_map = 1
AND user_map.user_relation<=7
WHERE ( event.event_date BETWEEN '2011-03-01' AND '2011-04-01' )
GROUP BY USER.user_id
you need indexes on
Upvotes: 1