2016-04-28 15 views
0

次のクエリは、ビデオに2つのカテゴリが関連付けられているため、合計で1ではなく2行を返します。INNER JOINを使用したMySQLのカウント

SELECT COUNT(video.id) AS `total` 
FROM `videos` AS `video` 
INNER JOIN `videos_categories` AS `video_category` ON `video_category`.`video_id` = `video`.`id` 
INNER JOIN `categories` AS `category` ON `category`.`id` = `video_category`.`category_id` 
WHERE video.title = 'John Mcane' OR category.description = 'Traditional' 

テーブルvideos_categoriesには2つの行があり、それが問題です。

id | video_id | category_id 
1 1   1 
1 1   2 

PHPで配列をカウントすることはできますが、それは正しくありません。どのように私はこれを解決することができますの任意のアイデア? Group byが機能しませんでした。

+0

ここでIDは重複していますか?ユニークではないと思いますか? – Ash

+0

この簡単な2ステップのアクション・コースに従ってください。1.まだ実行していない場合は、問題をより簡単に複製できるように、適切なCREATEおよびINSERTステートメント(および/またはsqlfiddle)を提供してください。 2.まだ実行していない場合は、手順1で提供された情報に対応する望ましい結果セットを提供します。 – Strawberry

答えて

0

COUNT(X)は、NULLでないX値の総数をカウントします。COUNT(DISTINCT X)は、あなたが望むものを与えるはずです(Xは一意のフィールドであると仮定します)。

関連する問題