列出MySQL中没有价格的所有产品

时间:2013-08-08 21:33:24

标签: mysql

此查询适用于利基价格比较网站。

我有2个表,第一个列出产品详细信息,第二个列出与产品相关的所有价格。产品可以有一个或多个价格。

我希望列出所有没有活动价格的产品用于管家。

价格表中可能有一个价格为零的条目,在这种情况下,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

3 个答案:

答案 0 :(得分:1)

要理解的最简单的查询是:

select * from table1
where not exists (
    select * from table2
    where Prod_price_active = 1
    and Prod_id = table1.Prod_id)

这是句子的SQL版本“给我所有没有活跃价格的产品”

答案 1 :(得分:0)

假设每个产品都在价格表中,您可以执行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

答案 2 :(得分:0)

您正在寻找一种方法来执行anti-join

SELECT table1.* FROM table1
                LEFT JOIN table2 USING(prod_id) 
                WHERE Prod_price IS NULL
                OR Prod_price_active = 0

这将只保留table1(“产品表”)中table2上没有相应条目的行(“价格表”)那些Prod_price_active设置为0的人。