2010-11-30 14 views
0

私はMySQLに参加していないので、多分あなたは私に手を差し伸べることができます。私はこれらのレコードb.found = 1.私はa.idたりしたくないすべてのレコードをしたい:MySQLの質問(join)

Table a 
Fields ID,name 

Table b 
Fields aID,cID,ID,found 

Table c 
Fields ID,name 

私が取得したい結果は以下の通りです:私は、次の表を持っています.nameが必要ですが、返されたレコードの数が必要です。したがって、b.found = 1およびc.id =(たとえば)3を持つ5つのレコードがある場合、返される値は5、c.idおよびc.nameです。

誰かがこれを行うことができますか?

は、実はこれは私がデータベースから取得したいものです: テーブルC内のすべてのレコードのリストと= 1とb.c_id = c.id

+1

ですからc.id、c.nameとのカウントをしたいです?から一致するレコード? – Orbling

+0

はいいいえ – Simon

+0

あなたはc.idでグループ化したいと思いますか? –

答えて

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、A、B、C WHERE a.id = baid AND c.id = baid FROM c.name AND b.found = 1 AND c.id = idThatIAmSearchingFor

構文が正確ではない場合は謝罪しますが、それはあなたが望む基本構造だと思います。 COUNT関数は、クエリによって検出された行数を返します。

-1

SELECT COUNT(*)Bからのカウント、c.id、c.name AS c.Id BY a.id = b.a_id WHERE b.found = 1 GROUPに参加します。

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

+0

働いていない:SQLは列を認識しませんテーブルCから – Simon

0

のようなもの:私は、これは必要な出力を提供するだろうと思う

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

NOT WORKING:mysqlエラーを返します(COUNT(c。*)が動作していないと思います) – Simon

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

私はあなたに同意すると思います。私はまだ私が要件を理解しているか分からない –

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