mysql - 如何只显示一张表的id而不与其他表重复?

标签 mysql sql

我有 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/

相关文章:

php - 使用 PHP+MySQL 成功插入后立即插入附加值

php - 错误 : Unknown column 'abc' in 'where clause'

SQL 代理作业 - "Run As"下拉列表为空

c# - Entity Framework 脚本生成

android - 如何从 SQLite 中检索特定列并将其显示在 Android 中的 ListView 表单中?

mysql - 将带有 DISTINCT 的 SELECT 结果转换为 MySQL 中的 DELETE 函数

MySQL 说 : Documentation #1064 - You have an error in your SQL syntax; on Stored Procedure

c# - 从另一个表插入值后触发

php - Eloquent ORM - 模型关系

c# - 通用数据库连接 C#