类别表和产品表模式,并给出了结果结构。
产品表:
category id | product id
-------------------------
1 : 1
1 : 2
1 : 3
价格表:
category id | product id | price
---------------------------------
1 | NULL | 10.00
1 | 3 | 15.00
结果:
category id | product id | price
---------------------------------
1 : 1 : 10.00
1 : 2 : 10.00
1 : 3 : 15.00
我需要mysql查询这个条件。请帮助我,我的想法用完了?
提前致谢
答案 0 :(得分:1)
冗长的方法,但结果与期望相同。
SELECT c.categoryid, c.productid, price
FROM cat c
JOIN link l USING(categoryid) WHERE l.productid IS NOT NULL AND l.productid<=>c.productid
UNION
SELECT c.categoryid, c.productid, price
FROM cat c
JOIN link l USING(categoryid)
WHERE L.productid IS NULL AND c.productid NOT IN(
SELECT DISTINCT c.productid
FROM cat c
JOIN link l USING(categoryid)
WHERE l.productid IS NOT NULL AND l.productid<=>c.productid
)
在此处验证为sqlfiddle