我有 6 个表格,其中 3 个是我需要在表格中显示的内容,另外 3 个是我需要在同一个表格中隐藏的内容。
报告:
id name branch comp_id start_date end_date
100 A 001 011 2022-08-14 2022-08-14
200 B 002 012 2022-08-14 2022-08-14
报告详细信息:
id product_id product_code price deliveries
100 01 11 20.00 10
100 01 11 20.00 10
200 01 11 20.00 20
200 02 12 25.00 20
产品:
id code name
01 11 Prod 1
02 12 Prod 2
产品详情:
id code name Desc
01 11 Prod 1 Desc 1
02 12 Prod 2 Desc 2
分支机构:
id code name
001 021 Branch 1
002 022 Branch 2
公司:
id name branch
011 Company 1 021
012 Company 2 022
我希望输出是这样的:
id:将来自报告表 分支名称:将来自使用报告表中的分支的分支表 company_name:将使用报告表中的 comp_id 来公司 产品名称:将来自使用报告详细信息表中的产品 ID 的产品表 描述:将来自使用报告详细信息表中的产品代码的产品详细信息表 start_date:将来自报告表 end_date:将来自报告表
id branch_name company_name product_name description start_date end_date
100 branch 1 Company 1 Prod 1 Desc 1 2022-08-14 2022-08-14
200 branch 2 Company 2 Prod 1 Desc 1 2022-08-14 2022-08-14
200 branch 2 Company 2 Prod 2 Desc 2 2022-08-14 2022-08-14
我有这个sql,它全部显示了报告详细信息表中的id:
SELECT *, `acc`.`name` AS `cname`, `out`.`name` AS `outname`, `pro`.`name` AS `pname`, `prod`.`name` AS `sname`
FROM `report` AS `rep`
JOIN `companies` AS `acc` ON `rep`.`account_id`=`acc`.`code`
JOIN `branches` AS `out` ON `rep`.`outlet_id`=`out`.`code`
JOIN `report_details` AS `red` ON `rep`.`report_id`=`red`.`report_id`
JOIN `products` AS `pro` ON `red`.`product_id`=`pro`.`id`
JOIN `product_details` AS `prod` ON `red`.`sku_id`=`prod`.`id`
最佳答案
试试这个:
SELECT R.id, B.name AS branch_name, C.name AS company_name, PD.product_name AS product_name, PD.Desc AS description, R.start_date
FROM Report R
LEFT JOIN report_details RD ON R.id = R.id
LEFT JOIN products P ON RD.product_id = P.id
LEFT JOIN product_details PD ON PD.product_id = PD.id
LEFT JOIN branches B ON R.branch = B.id
LEFT JOIN companies C ON R.comp_id = C.id
GROUP BY R.id, B.name, C.name, PD.product_name, PD.Desc, R.start_date
关于mysql - 如何只显示一张表的id而不与其他表重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26053647/