这个查询是为一个利基价格比较网站。
我有两个表,第一个列出产品细节,第二个列出与产品相关的所有价格。一个产品可以有一个或多个价格。
我想列出所有的产品,没有积极的价格,用于家政服务。
在价格表中可以有一个条目,其中的价格=零,在这种情况下,Prod_price_active将设置为"0“。如果产品确实有价格,那么Prod_price_active将被设置为"1“。
表1
Prod_id
Prod_name
Prod_description表2
Price_id
Prod_id
Prod_price
Prod_price_active发布于 2013-08-08 21:37:46
要理解的最简单的查询是:
select * from table1
where not exists (
select * from table2
where Prod_price_active = 1
and Prod_id = table1.Prod_id)这是SQL版本的句子“给我所有没有有效价格的产品”
发布于 2013-08-08 21:37:31
假设每个产品都在价格表中,您可以做一个inner join。
select a.Prod_id, a.Prod_name, a.Prod_description
from PRODUCTS a inner join PRICES b
on a.Prod_id = b.Prod_id
where b.Prod_price_active=0发布于 2013-08-08 21:41:40
您正在寻找一种执行反连接的方法
SELECT table1.* FROM table1
LEFT JOIN table2 USING(prod_id)
WHERE Prod_price IS NULL
OR Prod_price_active = 0这将只保留table1 (“产品表”)中没有相应条目的行(“价格表”)或将Prod_price_active设置为0的行。
https://stackoverflow.com/questions/18136541
复制相似问题