0

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

这是我的成本表结构 这成本 是我的小时表结构 小时 这是我的 临时表结构 在此处输入图像描述 这是我的员工表 员工表

这是我的决赛桌 vendor有 vendorID is unique 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
4

1 回答 1

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

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

于 2013-08-23T13:09:20.007 回答