如何根据供应商ID显示所有表中的通用数据,其中供应商ID是我的供应商表中的唯一键。我用它作为所有其他表(成本表、工时表、员工表、临时表和)表的外键。
这是我的成本表结构 这是我的小时表结构 这是我的临时表结构 这是我的员工表
这是我的最终表供应商,其中供应商ID是唯一的 key
我使用了以下查询,但它显示了不同的数据。
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/