0

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

我有 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
4

3 回答 3

1

最简单的查询是:

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

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

于 2013-08-08T21:37:46.157 回答
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
于 2013-08-08T21:37:31.380 回答
0

您正在寻找一种执行反加入的方法:

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的那些行。

于 2013-08-08T21:41:40.610 回答