簡體   English   中英

MYSQL:計算另一個表中與第一個表中的行相對應的行數

[英]MYSQL: Count # of rows in another table corresponding to rows in first table

我有三個表:客戶(業務列表,每個業務都有一個AccountID),聯系人(人員列表,通過AccountID綁定到Accounts表)和ContactComments(為各個聯系人留下的注釋列表,綁定到通過ContactID的“聯系人”表)。 我正在嘗試顯示所有聯系人的列表,以及每個聯系人獲得了多少條評論(有些評論為零)。 這是我當前的查詢:

    select
    a.ContactID, a.ContactType, a.FirstName, a.LastName, a.Phone, a.Email,
    b.AccountName, 
    c.ContactID, count(c.CommentID) as CountCon
    from
    Contacts a, Accounts b, ContactComments c 
    where 
    a.AccountID = b.AccountID 
    group by a.ContactID 
    order by a.LastName

當我通過PHP在頁面上顯示此內容時,我得到了:

Nonexistant Holdings, LLC   Larry Boe   941-555-8888    larry@example.com   View Comments   16

Another Subcontractor, Inc. Eric Coe    941-555-6000    eric@example.com    View Comments   16

Nonexistant Holdings, LLC   Yasmeen Crith   941-555-9999    yasmeen@asdf.com    View Comments   16

ABC Realty, Inc.    Jane Doe    941-555-1111    jane@example.com    View Comments   16

XYZ Properties, LLC Jim Foe 941-555-2222    jim@example.com View Comments   16

當前每一行末尾的16是注釋表中的注釋總數。 我意識到我的查詢已關閉,因為我的count(c.CommentID)當然是對所有注釋進行計數。 如何調整此設置,以便獲得每個聯系人的評論並在每行末尾顯示(如果聯系人沒有評論,則包括零)? 這是我需要加入才能完成的事情嗎? (目前還不太熟悉聯接。)

顯式聲明您的加入將有助於您查看問題所在。 例如,如果您顯式聲明了聯接,這就是查詢將轉換為的內容

select
a.ContactID, a.ContactType, a.FirstName, a.LastName, a.Phone, a.Email,
b.AccountName, 
c.ContactID, count(c.CommentID) as CountCon
from
Contacts a
join Accounts b on a.AccountID = b.AccountID
join ContactComments c --(but you are missing join qualifiers so this would need to be declared as a cross join for your query to run)
group by a.ContactID 
order by a.LastName

您想要的是什么(編輯:根據評論者將notull更新為ifnull):

select
a.ContactID, a.ContactType, a.FirstName, a.LastName, a.Phone, a.Email,
b.AccountName, 
c.ContactID, ifnull(count(c.CommentID), 0) as CountCon
from
Contacts a
join Accounts b on a.AccountID = b.AccountID
left join ContactComments c on a.ContactID = c.ContactID
group by a.ContactID 
order by a.LastName

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM