2012-04-20 106 views
1

編輯:詳細描述選擇計數從一個表(ID),其中該ID是存在於另一個表MYSQL

詳細說明:

*在表-A有100名成員,但只有其中50人在table_b中有記錄,並且只有25人在table_b中有記錄,其中批准= 1因此,我將需要返回的值是25 *

嘿大家這裏是我正在查詢的查詢解決它將需要返回一個結果計數,所以我可以通過mysql_result($ query,0)進行訪問。

SELECT COUNT(id) FROM table_a WHERE (THIS IS WHERE I AM STUCK) 

我需要檢查(在表-B MEMBERID的計數WHERE MEMBERID匹配表-A每個ID和批准表-B = 1) - 大於1個

最終結果必須是一個計數在table_b中有一個條目的成員數量。

需要訪問

table_a 
----------------- 
id 

table_b 
------------------ 
id 
memberID 
approved 

讓我知道如果你需要任何更多的細節表列的樣品。

+0

好的,你在尋找表中的ID大於1還是在兩個表中大於1? – Jack 2012-04-20 02:38:45

+0

是否正確地說結果應該是a中具有相應條目的行中的行數(a.id = b.memberId和b.approved = 1)? – sharakan 2012-04-20 14:39:19

+0

@ukritic - 您最終需要返回「count(table_a.id = table_b.MemberID AND table_b.approved = 1)」的值,並且只有當該計數爲「> 1」時? – 2012-04-20 15:10:50

回答

0
SELECT b.ID, a.ID 

FROM table_a a, table_b b 

WHERE a.ID = b.ID AND b.ID = 1 
+0

根據OP,他需要「...在table_b = 1中批准」的條目。即b.APPROVED = 1,而您的b.ID = 1。 – sharakan 2012-04-20 14:37:20

+0

同意@sharakan - 測試是針對「table_b.approved」= 1,而不是「b.ID」。 – 2012-04-20 15:09:00

1

我假設你想得到table_a中與table_b匹配的記錄數,只要table_b中的值被批准。因此,我會加入這兩個表格。內部聯接確保您只考慮兩個表中的行,並且where語句負責批准的需求。

select count(a.id) 
from table_a a 
join table_b b 
on a.id = b.memberID 
where b.approved=1 
+0

這會返回錯誤的數字,它會返回table_b中找到的項目總數,而不是滿足要求的table_a中的總數。 – MadScientist 2012-04-20 20:04:30

+1

我認爲如果將COUNT(a.id)'改爲COUNT(DISTINCT a.id)' – 2012-04-20 20:27:30

0

我在SQL有點生疏,但可以通過這個在這樣的查詢指定兩個表來實現:

SELECT COUNT(DISTINCT table_a.id) 
    FROM table_a, table_b 
    WHERE table_a.id = table_b.MemberID 
    AND table_b.approved = 1; 

我相信能夠滿足您的選擇標準。

+0

,這將返回相同的數字,看起來像table_b記錄的總數,而不是計數table_a符合條件的記錄 – MadScientist 2012-04-20 20:08:09

0
SELECT COUNT(*) AS cnt 
FROM table_a AS a 
WHERE EXISTS 
     (SELECT * 
     FROM table_b AS b 
     WHERE b.memberID = a.id 
      AND b.approved = 1 
    ) 
0

問題解決了

不得不向後想起來

SELECT COUNT(DISTINCT memberID) 
    FROM table_b 
    WHERE approved =1 

我不需要連看錶-A看到,因爲我根據表-B計數MEMBERID

有時候,解決方案非常簡單,恰到好處。

感謝您的幫助!我希望這對未來有幫助。

+0

這與您的問題規範相同,只有一個細節但至關重要的細節:table_b.memberid的任何值也出現在table_a.id中。如果你不告訴他們,哪一個課程沒有人知道。 – 2012-04-20 20:31:18

+0

此查詢返回我正在查找的結果。基本上我不需要查詢table_a,因爲我只需要從table_b中計數DISTINCT memberID。在我重新思考我真正需要的信息後,我很清楚查詢中不需要table_a。 – MadScientist 2012-04-20 20:38:57

+0

是的,我的意思是說它是正確的。 'DISTINCT'後面也刪除了不需要的括號。 – 2012-04-20 20:42:07

相關問題