0

我不喜欢 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,但我想要返回的记录数如果我愿意的话。因此,如果有 5 条记录的 b.found = 1 和 c.id =(例如)3,那么我想要返回值 5、c.id 和 c.name。

有人能够做到这一点吗?

实际上这就是我想从数据库中得到的:表 C 中所有记录的列表和表 B 中已找到 = 1 和 b.c_id = c.id 的记录数

4

6 回答 6

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
于 2010-11-30T22:49:23.333 回答
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
于 2010-11-30T22:48:36.357 回答
0

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 函数返回查询找到的行数。

于 2010-11-30T22:45:13.190 回答
0

就像是:

SELECT count(`c`.*), 
           `c`.`id`, 
          `c`.`name` 
  FROM `b` 
  JOIN `c` 
    ON `c`.`id` = `b`.`c_id` 
 WHERE `b.found` = 1
于 2010-11-30T22:46:25.350 回答
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
于 2016-07-21T07:04:40.477 回答
-1

SELECT COUNT(*) AS Count, c.id, c.name FROM b join a on a.id = b.a_id WHERE b.found = 1 GROUP BY c.Id;

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

于 2010-11-30T22:46:03.330 回答