我不是那个加入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
答案 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中每组记录的数量。