【问题标题】:mySQL - inner join on basis of other inner joinmySQL - 基于其他内连接的内连接
【发布时间】:2014-05-18 15:03:48
【问题描述】:

所以我有 3 张桌子:

  1. “销售”(包括“条形码”列),

  2. “Products”(包括“barcode”和“image_id”列)和

  3. “图像”(包括“image_id”和“image_data”列)。

我的输入数据是“销售”表的“条形码”列中的 12 位数字。

首先,我需要找到这个条形码对应的 image_id(通过使用 Products 表的内连接):

SELECT image_id 
FROM tbl_products 
INNER JOIN tbl_sales 
ON tbl_products.barcode = tbl_sales.barcode

现在,我需要通过某种内部连接上述选择结果和 image_id 列上的“Images”表来从“Images”表中选择“image_data”列。

如何在 1 个查询中执行此操作(如果可以的话)?

【问题讨论】:

  • 我不明白。你在哪个部分苦苦挣扎?
  • 您能否提供示例数据并解释问题所在?你似乎知道足够多的 SQL,inner join images on images.image_id = tbl_sales.barcode 还不够。
  • 最后一个。不知道如何对内部联接的结果进行内部联接。
  • Um select * From Some Table Inner Join SomeOtherTable on ... inner join YetAnother Table On ...

标签: mysql select join


【解决方案1】:

类似

SELECT tbl_images.image_id, tbl_images.image_data 
FROM tbl_sales 
INNER JOIN tbl_products 
ON tbl_products.barcode = tbl_sales.barcode
inner join tbl_images
ON tbl_images.image_id = tbl_products.image_id
Where tbl_sales.BarCode = '0123456789AB'

只需将您的联接链接在一起即可。注意你也可以使用别名

SELECT i.image_id, i.image_data 
FROM tbl_sales s 
INNER JOIN tbl_products p 
ON p.barcode = s.barcode
inner join tbl_images i
ON i.image_id = p.image_id
Where s.BarCode = '0123456789AB'

也可以工作并且更具可读性。

【讨论】:

  • 谢谢,它工作得很好(第一个字段不需要 SELECT 字符串,我只需要第二个)!
【解决方案2】:

您可以在一个查询中连接多个表。连接 2 个表时,语法相同。您也可以混合连接类型:

示例

SELECT
    * -- Change it to the required field list!
FROM
    Table1 T1
    INNER JOIN Table2 T2
        ON T1.col1 = T2.col2
    INNER JOIN Table3 T3
        ON T2.col3 = T3.col4
    LEFT JOIN Table4 T4
        ON T1.col5 = T4.col6 AND T2.col7 = T3.col8

一些提示:始终为连接的表使用别名,并在查询中的任何位置使用任何列时使用这些别名。

【讨论】:

    猜你喜欢
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多