2010-11-30 57 views
0

我不是那種進入MySQL連接的,所以也許你可以幫我一把。我有如下表:MySQL問題(加入)

Table a 
Fields ID,name 

Table b 
Fields aID,cID,ID,found 

Table c 
Fields ID,name 

我想要得到的結果是這樣的:我想所有在那裏b.found = 1.這些記錄,我不想a.id或記錄.name,但是我希望如果我願意的話,可以返回的記錄數。所以如果有五條記錄的b.found = 1和c.id =(例如)3,那麼我想要一個返回值5,c.id和c.name。

有人能夠做到這一點?

其實這就是我想從數據庫中獲取: 的表C中的所有記錄的列表,並且已經找到= 1和b.c_id = c.id

+1

所以你要c.id,c.name和的計數記錄匹配從一個? – Orbling 2010-11-30 22:42:34

+0

是的,這是正確的 – Simon 2010-11-30 22:44:02

+0

我想你想按c.id分組吧? – 2010-11-30 22:44:20

回答

2
Table: a 
Fields: ID, name 

Table: b 
Fields: aID, cID, found 

Table: c 
Fields: ID, name 



SELECT c.ID, c.name, COUNT(1) 
FROM b 
JOIN c ON c.ID = b.cID AND b.found=1 
GROUP BY c.ID 
0

的表B中記錄的計數SELECT COUNT(*),c.id,c.name FROM a,b,c WHERE a.id = baid AND c.id = baid AND b.found = 1 AND c.id = idThatIAmSearchingFor

道歉,如果我沒有得到確切的語法,但我相信這是你想要的基本結構。 COUNT函數返回查詢找到的行數。

-1

SELECT COUNT(*)AS計數,c.id,c.name 選自B加入上a.id = b.a_id WHERE b.found = 1 GROUP BY c.Id;

COUNT返回來自GROUP BY的每個組中記錄的計數。

0

喜歡的東西:

SELECT count(`c`.*), 
      `c`.`id`, 
      `c`.`name` 
    FROM `b` 
    JOIN `c` 
    ON `c`.`id` = `b`.`c_id` 
WHERE `b.found` = 1 
1
SELECT c.id, c.name, COUNT(*) 
    FROM c 
     INNER JOIN b 
      ON c.id = b.c_id 
       AND b.found = 1 
    GROUP BY c.id, c.name 
0

我認爲這將提供所需的輸出 -

select count(*), b.cID, c.name from b 
inner join c on c.id=b.cID and b.found=1 
group by b.cID