我有以下情况:
1客户有2个产品列表(一个普通,一个私有),这些列表有很多产品,有些产品可以出现在两个列表中。如果产品出现在私人列表中,我想得到它,否则我将把它放在公共列表中。
在您看来,实现这一目标的最快方法是什么?到目前为止,我尝试了以下内容:
还有其他可能实现这一目标吗?
修改
这是一个演示我拥有http://sqlfiddle.com/#!6/41d2e/2
的小提琴在小提琴中我假设列表ID为7和1,因为它们是客户1的列表ID,我没有使用连接,因为我已经从php检索到了ID。
我需要的是从私人列表中检索产品(如果存在),否则从公共
作为一个更多的mysql人,我通常会在没有聚合的情况下通过一个组进行此操作,因此使用mysql的正确顺序只会减少不需要的记录(不好的做法,但是足够稳固且高性能):
select *
from pricelist
where listId in (1, 7)
order by listId asc
group by artnum
因此,例如,如果我想获取客户端ID 1的所有产品,我需要检索thoses:
ID ARTNUM ARTDES LISTID PRICE
1 1000 potatoes 1 20
1 1001 carrots 7 4
由于客户1有2个列表:1和7(土豆出现在列表1和7中,所以我只想在客户私人列表中使用土豆,而不是公共列表)
希望我足够清楚,抱歉所有的编辑
答案 0 :(得分:0)
由于我无法弄清楚如何在纯SQL中正确地执行此操作,因此我使用了PHP方法: