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 は必要ありませんが、返されるレコードの数が必要です。もし私がそうしたかったなら。したがって、b.found = 1 で c.id = (たとえば) 3 のレコードが 5 つある場合、返される値は 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 に答える
-1

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

COUNT は、GROUP BY から各グループのレコード数を返します。

于 2010-11-30T22:46:03.330 に答える