mysql 用于获取联接结果的SQL查询-交叉联接?[关闭]

798qvoo8  于 12个月前  发布在  Mysql
关注(0)|答案(1)|浏览(125)

**关闭。**此题需要debugging details。目前不接受答复。

编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将帮助其他人回答这个问题。
5天前关闭。
Improve this question
我有表用户-
| id|姓名|电子邮件|
| - -----|- -----|- -----|
| 1|塔马格纳|tamaghna@g|
| 2|阿鲁尼马|arunima@g|
| 3|拉吉夫|rajiv@g|
我还有一桌产品-
| id|姓名|价格|
| - -----|- -----|- -----|
| 1|阿穆尔牛奶|十点|
| 2|阿穆尔黄油|20点|
| 3|阿穆尔奶酪|三十|
最后一张table是手推车
| id|用户id|产品ID|
| - -----|- -----|- -----|
| 1| 1| 1|
| 2| 1| 3|
| 3| 2| 1|
我需要的是两个交叉的表,引用购物车表-
| 产品名称|用户名|买了吗|
| - -----|- -----|- -----|
| 阿穆尔牛奶|塔马格纳|十点|
| 阿穆尔黄油|塔马格纳|空值|
| 阿穆尔奶酪|塔马格纳|三十|
| 阿穆尔牛奶|阿鲁尼马|十点|
| 阿穆尔黄油|阿鲁尼马|空值|
| 阿穆尔奶酪|阿鲁尼马|空值|
| 阿穆尔牛奶|拉吉夫|空值|
| 阿穆尔黄油|拉吉夫|空值|
| 阿穆尔奶酪|拉吉夫|空值|
我尽力了

select
  t1.name, t1.email, t3.name, t3.price
from Users t1
left outer join cart t2
  on t1.id = t2.user_id
left outer join products t3 
  on t2.product_id = t3.id

但运气不好的话,实际的table就不能按要求拿出来了。有什么帮助吗?

bxjv4tth

bxjv4tth1#

您通常需要cross join用户和产品,然后将cart表与两个引用表中的列上的left join一起引入:

select u.name user_name, 
    p.name product_name, p.price product_price,
    (c.id is not null) product_is_in_user_cart 
from users u 
cross join products p
left join cart c on c.user_id = u.id and c.product_id = p.id

这将给出一个结果集,其中包含用户名、产品名和价格,以及一个0/1列,该列指示该产品是否可以在用户的购物车中找到(这似乎比只显示购物车中产品的价格更容易理解,但如果需要,您仍然可以使用case到达那里)。
请注意,我更改了表别名,使它们更有意义。

相关问题