MySQL Complex Join - 4个具有多个条件的表

时间:2015-06-09 22:05:03

标签: php mysql

我需要帮助创建一个复杂的SQL查询,这有点超出了我的基础知识......我非常感谢任何人的帮助!

请参阅下面的数据库结构。粗体代表表格;以下是每个表的相关字段。

我在下面包含了所需的输出字段以及查询的条件。

数据库结构

custom_fields_data ........... sales_listings ......... .........销售列表

........ owner_id ......... ................. listing_id .......... buyer_id ........... ID

......... FIELD_ID ............................... sale_id ..... ............. ID .............名称

.......... value .............................. created_at

数据库关系:

custom_fields_data .owner_id = sales_listings .listing_id = 商家信息 .id

sales_listings .sale_id = 销售 .id

条件:

custom_fields _data.field_id = 4
销售 .buyer_id = 12,20,21或30

所需的输出:

.ID
.NAME
custom_fields_data 。价值
sales_listings .created_at

谢谢,非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

这非常直截了当。将您的问题分为三个部分:

  1. 您想要输出哪些列
  2. 您想要数据和加入条件的表格
  3. 具体条件是什么
  4. 我发现你已经解决了这个问题,但还没有尝试编写查询。

    我不是MySQL专家,但在T-SQL中,它看起来如下:

      SELECT listings.id
          listings.name
          custom_fields_data.value
          sales_listings.created_at    
        FROM custom_fields_data
           INNER JOIN sales_listings ON sales_listings.listing_id = custom_fields_data.owner_id
           INNER JOIN sales ON sales.id = sales_listings.sale_id
           INNER JOIN listings ON listings.id = sales.Id
        WHERE custom_fields_data.field_id = 4 
            AND sales.buyer_id IN (12, 20, 21, 30)
    

    在你的问题中,你没有明确定义清单表和其他表之间的关系。所以我假设sales.id = listings.id。