MySQL问题(加入)

时间:2010-11-30 22:38:46

标签: mysql join multiple-tables

我不是那个加入MySQL的人,所以也许你可以帮我一把。我有以下表格:

Table a  
Fields ID,name

Table b  
Fields aID,cID,ID,found

Table c  
Fields ID,name

我想得到的结果如下:我想要所有记录,其中b.found = 1.在这些记录中,我不想要a.id或a.name,但我想要的记录数量如果我愿意,我已经退回了。因此,如果有五个记录有b.found = 1和c.id =(例如)3,那么我想要一个返回值为5,c.id和c.name。

有人可以这样做吗?

实际上这是我想从数据库中获取的内容: 表C中所有记录的列表以及表B中找到的记录数= 1和b.c_id = c.id

6 个答案:

答案 0 :(得分: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

答案 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

答案 2 :(得分:0)

SELECT COUNT(*),c.id,c.name 从a,b,c WHERE a.id = b.a.id AND c.id = b.a.id AND b.found = 1 AND c.id = idThatIAmSearchingFor

道歉,如果我没有准确的语法,但我相信这是你想要的基本结构。 COUNT函数返回查询找到的行数。

答案 3 :(得分:0)

类似的东西:

SELECT count(`c`.*), 
           `c`.`id`, 
          `c`.`name` 
  FROM `b` 
  JOIN `c` 
    ON `c`.`id` = `b`.`c_id` 
 WHERE `b.found` = 1

答案 4 :(得分: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

答案 5 :(得分:-1)

SELECT COUNT(*)AS Count,c.id,c.name FROM b加入a.id = b.a_id 在哪里b.found = 1 GROUP BY c.Id;

COUNT返回GROUP BY中每组记录的数量。