如何在vendorID的基础上显示所有表中的公共数据,其中vendorID是我的供应商表中的唯一键。我使用它作为所有其他(费用表,小时表,员工表,临时表和)表的foriegn键。
这是我的费用表 struructre 这是我的小时表结构 这是我的 Temporarytable 结构 这是我的员工表
这是我的最终表供应商有vendorID是唯一的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
答案 0 :(得分:0)
如果我理解,试试这个:
在您的查询字段中列出要显示的显式字段,例如:
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
现在我们添加其他信息,但我必须了解你对他们的关系有什么要求