简体   繁体   English

计算联接中选择的结果

[英]Count Results from a Select in a Join

I have this query that works as I need. 我有这个查询,可以根据需要工作。 However I would like to have a column showing number of times a record repeats. 但是,我想有一列显示记录重复的次数。

The query: 查询:

SELECT total.Total, subqry.Company AS Supplier, company.Company AS Customer, purchase_details.CompanyID, 
                            product.Description1, purchase_details.PurchaseID, purchase_details.PurchaseCreated, 
                            purchase_details.Completed, purchase_details.OriginalOrd
                    FROM purchase_details
                        LEFT JOIN product ON purchase_details.PartNumber = product.PartNumber
                        LEFT JOIN orders ON purchase_details.OriginalOrd = orders.OrderID
                        LEFT JOIN contact ON orders.ContactLinkID = contact.ID
                        LEFT JOIN company ON contact.LinkID = company.LinkID
                        LEFT JOIN (SELECT company.Company, purchase_details.CompanyID FROM company 
                                    LEFT JOIN purchase_details ON company.ID = purchase_details.CompanyID) 
                                    AS subqry ON purchase_details.CompanyID = subqry.CompanyID
                        LEFT JOIN (SELECT OriginalOrd, count(DISTINCT CompanyID) AS Total FROM purchase_details
                                    GROUP BY OriginalOrd) AS total ON purchase_details.OriginalOrd = total.OriginalOrd
                    WHERE purchase_details.Completed = $show AND
                        (subqry.Company LIKE :search
                        OR company.Company LIKE :search
                        OR product.Description1 LIKE :search
                        OR purchase_details.PartNumber LIKE :search
                        OR purchase_details.PurchaseID LIKE :search
                        OR purchase_details.OriginalOrd LIKE :search)
                    GROUP BY PurchaseID

The company id column returns: 公司ID列返回:

504
1739
504
1389
504

I would like to return the info below so ideally in a join: 我想在联接中理想地返回以下信息:

504    |   3
1739   |   1
504    |   3
1389   |   1
504    |   3

I will use this column in the php application to trigger other functions. 我将在php应用程序中使用此列来触发其他功能。

Thanks in advance 提前致谢

use group by company_id 使用company_id分组

select count(company_id) as c
from table_name
group by company_id;

Add company_id to the GROUp BY list after PurchaseID and add another column count(DISTINCT company_id) company_count to the select. 在PurchaseID之后将company_id添加到GROUP BY列表中,然后将另一个列计数(DISTINCT company_id)company_count添加到选择中。

SELECT
....//other columns
count(DISTINCT purchase_details.CompanyID) company_count
FROM
...//rest of queries
GROUP BY purchase_details.CompanyID,PurchaseID
;

This bit looks odd... 这有点奇怪...

   SELECT c.Company
        , pd.CompanyID 
     FROM company c
     LEFT 
     JOIN purchase_details pd
       ON c.ID = pd.CompanyID

You're selecting no information from purchase_details that's not already present in company. 您没有从Purchase_details中选择公司中不存在的信息。 So why bother? 那为什么要麻烦呢?

Also, what might ":search" actually look like? 另外,“:search”实际可能是什么样子?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM