2012-01-26 105 views
0

編輯:好吧,我想我需要更清楚 - 我想結果顯示出所有'名稱'出現在表頂部,對結果表中的計數(如果有的話)。希望這是有道理的?MySQL左加入

有一個巨大的問題,我的大腦不能像它應該那樣工作。

我想要做的就是在通過連接的單個語句中計算公共字段的行數。

SELECT name, COUNT(name) as Count FROM acme 
    SELECT name, COUNT(name) as Total FROM results 

我敢肯定,這應該是這樣的......

SELECT acme.name, COUNT(acme.name) As Count, 
      COUNT(results.name) as Total 
    FROM acme 
    LEFT JOIN results ON acme.name = results.name 
    GROUP BY name 
    ORDERY BY name 

不過,這並不帶回正確的計數。

想法,我在哪裏出錯......我知道,這將非常明顯。

H.

+1

爲什麼使用內部連接的左外連接instad? – Mithrandir

+0

你可以發表表格的模式嗎? – Triztian

回答

2

從您的反饋,這將得到你想要的。您需要首先從「ACME」文件中首先獲取唯一的名稱/計數...然後將其與結果表中的計數記錄相結合,否則,您將最終得到計數的笛卡爾結果。如果ACME的名稱爲「X」5次,結果爲「X」的20次,那麼您的總數將爲100.下面的查詢實際上會導致單行顯示「X」,5,20,這就是您看起來的樣子for ..(因爲ACME中有很多名字)。

我已經改變爲左連接的情況下有在ACME表名稱中不結果表中存在,它不會從你的最後答案拖放

select 
     JustACME.Name, 
     JustACME.NameCount, 
     COALESCE(COUNT(*), 0) as CountFromResultsTable 
    from 
     (select a.Name 
       count(*) as NameCount 
      from 
       acme a 
      group by 
       a.Name) JustACME 

     LEFT JOIN results r 
     on JustACME.Name = r.Name 
    group by 
     JustACME.Name 
+0

請參閱上面的內容,如果有的話,需要在結果中出現的所有名稱都反對計數。 –

+0

@Homer_J,也請參閱修訂後的答案....對於給定名稱,Acme表格是否有多個條目,AND結果對於同一個給定名稱還有多個條目?或者... ACME表只顯示它想要的唯一名稱(即:acme表中每個名稱只有一個名稱),並查看它出現在「結果」表中的次數。這就是爲什麼你對兩張桌子的混淆並試圖加入他們。 – DRapp

+0

這兩個表中有多個條目 - 我認爲這讓我很頭疼:-( –

0

看起來這是因爲加入,它與您的計數有關。嘗試使用SELECT * FROM運行連接並查看生成的表。問題應該從那裏顯而易見。 = D

0

是的,你的連接(內在或外在,無所謂)與你的結果相混淆。

事實上,它可能會返回具有相同名稱的行的產品,而不是總和。

你想要做的是總結第一張表中的行,總結第二張表中的行,然後加入

像這樣:

Select name, a.count as Count, r.count as Total 
From (select name, count(*) from acme group by name) a 
Left join (select name, count(*) from results group by name) r using (name) 
+0

謝謝,但似乎無法得到這工作,只帶回1行? –

0

我不明白你爲什麼要禁止使用兩個語句這只是複雜的一切。 我看到的唯一原因是將兩個結果合併爲一個答案。 我不知道如果是後者的工作,但我會嘗試這樣的:

SET @acount = (SELECT count(DISTINCT name) FROM acme); 
SELECT count(DISTINCT name) as Total, @acount as Count FROM results 

我會張貼此作爲一個查詢,(希望)回到正確的結果。讓我注意一下,從你的問題來看,你是否想知道每個名字的翻譯頻率是多少,或者你想要計算出獨特的名字,這一點並不清楚。

+0

欣賞反饋,但得到它的排序! –