▽1
●
こばさん ●167ポイント ベストアンサー |
select *
from user
where id in (select user_id from order where syouhin_id=A)
and id in (select user_id from order where syouhin_id=B)
簡単な記述で応用の効く例
SELECT a.* FROM `user` a WHERE EXISTS(SELECT * FROM `order` b WHERE b.user_id = a.id AND b.syouhin_id = A LIMIT 1) AND EXISTS(SELECT * FROM `order` b WHERE b.user_id = a.id AND b.syouhin_id = B LIMIT 1) ;
動作速度面で少し有利な例
SELECT a.* FROM `user` a LEFT JOIN `order` b1 ON b1.user_id = a.id AND b1.syouhin_id = A LEFT JOIN `order` b2 ON b2.user_id = a.id AND b2.syouhin_id = B WHERE b1.order_id IS NOT NULL AND b2.order_id IS NOT NULL ;
お暇な時に以下参照
http://dev.mysql.com/doc/refman/5.1/ja/optimizing-subqueries.html
SELECT * FROM user WHERE id in (SELECT user_id FROM ORDER WHERE syouhin_id=A) AND id IN (SELECT user_id FROM ORDER WHERE syouhin_id=B);