php - 数据显示来自4个表mysql

标签 php mysql

如何根据供应商ID显示所有表中的通用数据,其中供应商ID是我的供应商表中的唯一键。我用它作为所有其他表(成本表、工时表、员工表、临时表和)表的外键。

这是我的成本表结构 cost 这是我的小时表结构 hour 这是我的临时表结构 enter image description here 这是我的员工表 employee table

这是我的最终表供应商,其中供应商ID是唯一的 key enter image description here

我使用了以下查询,但它显示了不同的数据。

SELECT * FROM cw_employee_csv as emp 
inner join cw_cost_hour as cost on cost.vendorid=emp.vendorid 
inner join cw_temp_employee as temp on cost.vendorid=temp.vendorid 
inner join cw_hour_company as hour on temp.vendorid=hour.vendorid 
inner join cw_vendor as vendor on temp.vendorid=vendor.vendorid 
where vendor.companyid=1 ORDER BY hour.timeFrom ASC

最佳答案

如果我明白,请尝试以下操作:

在您的查询字段中列出您想要显示的显式字段,例如:

SELECT 
    emp.assignmentid, cost.bill_type 
FROM 
    cw_employee_csv AS emp 
INNER JOIN 
    cw_cost_hour AS cost ON cost.vendorid = emp.vendorid 
INNER JOIN 
    cw_temp_employee AS temp ON cost.vendorid = temp.vendorid 
INNER JOIN 
    cw_hour_company AS hour ON temp.vendorid = hour.vendorid 
INNER JOIN 
    cw_vendor AS vendor ON temp.vendorid = vendor.vendorid 
WHERE
    vendor.companyid = 1 
ORDER BY 
    hour.timeFrom ASC

如果表的基数不同,并且您只想为每个供应商显示一行,则必须使用 cw_vendor 编写主查询,并使用一些子查询来检索其他表的附加信息。显然,关于供应商表的父表,您可以使用 INNER JOIN 信息而不使用子查询。

评论后编辑:

您从以下查询开始(聊天讨论后):

我按公司提取汇总(我想按供应商汇总您的成本,如果您想应用其他公式,则使用相同的算法)

select 
    sum(t.vendor_cost), t.companyid
from 
    (select 
         vendor.companyid as companyid, vendor.id as vendorid,
         (select SUM(c.cost)
          from cw_cost_hoyr c
          where c.vendorid = vendor.id) as vendor_cost
     from 
         cw_vendor vendor) as t
group by 
    t.companyid

现在我们添加其他信息,但我必须了解您到底想要什么与他们的关系

关于php - 数据显示来自4个表mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18403634/

相关文章:

MYSQL 语法连接

php - 数据库 : best practice countries, 国家代码,国家电话代码

来自不同主机的 PHP-Mysql 表连接

php - 发布选中和未选中的复选框

php - 保护数据库中的密码字段

php - 多选字段仅提交最后选择的选项

php - 如何从数据库加载 Symfony 的配置参数 (Doctrine)

php - 如何在 laravel 中永久更改配置文件

php - Mysql中按前缀搜索记录

mysql - 添加到查询以获得以前结果 SQL 的总和