简体   繁体   中英

Intersection in mysql for multiple values

The intersect keyword is not available in mysql. I want to know how to implement the following in mysql db. My tables are:

customer(cid,city,name,state)
orders(cid,oid,date)
product(pid,price,productname)
lineitem(lid,pid,oid,totalquantity,totalprice)

I want the products bought by all the customers of a particular city 'X'. ie every customer in city 'x' should have bought the product. I managed to select the oid's and the pid's of customers living in that particular city. Now I should select the pid's which is present in all the oid's.

Example.

Oid     Pid
2400     1
2400     2
2401     3
2401     1
2402     1
2403     1
2403     3

The answer from the above input should be 1 because it is present in all oid's. The query which I used to get the oid's and pid's:

select t.oid,l.pid
  from lineitem l
  join (select o.oid,c1.cid
          from orders o
          join (select c.cid
                  from customer c
                  where c.city='X') c1
          where o.cid=c1.cid) t on l.oid=t.oid 

Now I need to intersect all the oid's and get the result.The query should not be dependent on data.

Try:

select pid, count(*)
  from (select t.oid, l.pid
          from lineitem l
          join (select o.oid, c1.cid
                 from orders o
                 join (select c.cid from customer c where c.city = 'X') c1
                where o.cid = c1.cid) t
            on l.oid = t.oid) x
 group by pid
having count(*) = (select count(*)
                     from (select distinct oid
                             from lineitem l
                             join (select o.oid, c1.cid
                                    from orders o
                                    join (select c.cid
                                           from customer c
                                          where c.city = 'X') c1
                                   where o.cid = c1.cid) t
                               on l.oid = t.oid) y) z

我认为您可以通过使用IN实现您想要的

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM