duangou1953 2015-11-02 12:20
浏览 402
已采纳

LEFT JOIN有多行结果

I have 3 tables products,colors,assign with this structure:

products:

product_id | default_color
1          | 1

colors

color_id | color_name
1        | Black
2        | Green
3        | Yellow

assign

product_id | color_id
1          | 1
1          | 2
1          | 3 

My query returns only first row from "assign" table, I need to have ALL colors assigned for current product.

Here is a query I use:

SELECT * FROM products p
LEFT JOIN assign a ON p.product_id = '1' 
LEFT JOIN colors c ON a.color_id = c.color_id
WHERE p.product_id = 1
  • 写回答

4条回答 默认 最新

  • doukuo9116 2015-11-02 12:24
    关注

    Try this:

    SELECT * FROM products p
    LEFT JOIN assign a ON a.product_id = p.product_id
    LEFT JOIN colors c ON c.color_id = a.color_id
    WHERE p.product_id = 1
    

    The join condition should be made on column names, not on values.
    For filtering results, use where.

    See here a working sqlFiddle.

    For more info on join, see the official docs here.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥30 自适应 LMS 算法实现 FIR 最佳维纳滤波器matlab方案
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥15 Python3.5 相关代码写作
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像