简体   繁体   English

mysql多重连接并从两个内部连接表中仅检索一条记录

[英]mysql multiple join and retrieving only one record from two inner join table

I am in stuck in a query. 我陷入查询中。 Here is my current query. 这是我当前的查询。

SELECT products.product_id, products.product_title,
    package_category_products.PCP_id,
    product_images.PI_file_name
FROM package_category_products
LEFT JOIN products ON products.product_id = package_category_products.PCP_product_id

-- BEGIN MARKED CODE
LEFT JOIN product_inventories on product_inventories.PI_product_id = products.product_id
INNER JOIN product_images on product_images.PI_product_id = product_inventories.PI_product_id
    AND product_images.PI_color = product_inventories.PI_color_id
-- END MARKED CODE

WHERE PCP_package_id = 17
AND PCP_package_category_id = 3
AND product_status ='active'  

This query currently return redundant data. 该查询当前返回冗余数据。 I want to use a sub query at the marked code to return only one record from this two table after joining. 我想在标记的代码中使用子查询,以便在加入后仅从这两个表中返回一条记录。 So that I will avoid redundant data and note that I need only one record for each product. 为了避免重复数据,请注意,每个产品只需要一个记录。

Replace "SELECT" by "SELECT DISTINCT": 将“ SELECT”替换为“ SELECT DISTINCT”:

SELECT DISTINCT a.product_id, a.product_title, d.PCP_id, c.PI_file_name

FROM package_category_products as d
LEFT JOIN products as a
ON a.product_id = d.PCP_product_id 

LEFT JOIN product_inventories as b on b.PI_product_id = a.product_id 

INNER JOIN product_images  as c
ON c.PI_product_id = b.PI_product_id AND c.PI_color = b.PI_color_id

WHERE PCP_package_id = 17 AND PCP_package_category_id = 3 AND product_status ='active'

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM