【发布时间】:2014-05-23 17:13:01
【问题描述】:
我在寻找这个问题的解决方案时遇到了一些问题。我认为我的问题是不知道我的特定需求在 mysql 约定中是如何命名的。
不管怎样,问题就在这里。
我有 2 张桌子:
表一是:
Color
id,name
1,red
2,blue
3,green
4,yellow
表2是:
Item
id,name,color_id,quantity
1,knife,1,10
2,fork,1,10
3,knife,3,10
4,hammer,4,10
现在我想执行一个返回给我的查询:
1,red,knife,10
2,blue,null,null
3,green,knife,10
4,yellow,null,null
作为对查询的描述,我会说:
1- 列出表 1 中的所有元素(仅一次)
2- 给定查询中的工具(在本例中为刀),用数量填充连接。 如果该对象在该颜色中不可用,则留空。
现在我尝试了一个简单的左连接,不幸的是它还给了我黄色的锤子。 我尝试了 left join + where 子句,但它只返回了红刀和绿刀,没有显示黄色和蓝色。
我希望避免使用子查询。
你怎么看?
【问题讨论】:
-
item表的主键是什么?我希望它是
id,但你使用了 3 两次。 -
似乎你应该有第三张桌子
-
项目、颜色,然后是链接两者并存储数量的项目颜色。通过该设置,可以使用外部连接进行此查询。
-
你应该使用内部连接
标签: mysql