【发布时间】:2014-02-12 11:16:23
【问题描述】:
我有一张桌子 PROD
ID NAME
1 Apple
2 Banana
还有相对表 PRICES ,具有全局价格(ID_USER 为 Null) 或每用户价格 (ID_USER)
PROD_ID USER_ID PRICE
1 null 10
1 5 8
现在,我需要一个查询来查找所有产品和相对价格,
问题是我只在有用户价格时才尝试检索用户价格,否则检索全球价格
SELECT PROD.* , PRICES.* FROM PROD
LEFT JOIN PRICES ON PROD.ID_PROD = PRICES.ID_PROD
WHERE PRICES.USER_ID IS NULL OR PRICES.USER_ID = 5
此查询返回 2 行(prod 与 2 个价格相连)
有没有一种方法可以在一次查询中检索产品的确切价格?
谢谢!!
编辑:在连接中,只有当该行存在时,我才需要每个用户的价格行(最后一个),否则我需要检索具有全球价格的行,这可能吗?
【问题讨论】:
-
具体价格是多少?
-
由于不清楚要求,请详细说明问题。
-
如果用户已登录,我将使用 USER_ID = (logged user id) 获取价格,但某些产品可能没有每个用户的价格,因此我需要使用USER_ID = NULL
-
哦,这很简单。见 COALESCE()