1

私は3つのテーブルを持っています

Table: cm
    id      date                     title         body
     1      2013-01-05 18:36:58      SA v AUS      SA AUS Body
     2      2013-01-04 08:16:20      PA v AP       PA v AP Body

Table2: cat_post
post_id   cat_id           desc
  1            2           desccccc
  2            2           desccccc
  2            1           desccccc

Table3: cats
cat_id         name                cat_desc
  1            Category1           desccccc
  2            Category2           desccccc

特定の cat_post.cat_id の下にある ID を持つテーブル cm からすべてのレコードを選択したいと考えています。

cat_id が 1 であると仮定し、cat_post テーブルで投稿 ID が cat_id 1 であるテーブル cm からすべてのレコードを選択します。

このクエリを使用しましたが、これはすべての行を 2 回返します (重複行)

SELECT DISTINCT * from cm INNER JOIN cat_post ON cat_post.cat_id = 2;
4

2 に答える 2

1

cat_post(post_id, cat_id)制約がある場合UNIQUE、これは次のようになります。

SELECT cm.* 
FROM cm
  JOIN cat_post AS cp 
    ON cp.post_id = cm.id 
WHERE cp.cat_id = 1 ;

これを使用することもできます:

SELECT cm.* 
FROM cm
WHERE EXISTS
      ( SELECT *
        FROM cat_post AS cp 
        WHERE cp.cat_id = 1 
          AND cp.post_id = cm.id 
       ) ;
于 2013-01-08T14:34:54.197 に答える
0

これを試して:

SELECT DISTINCT cm.* 
FROM cm 
INNER JOIN cat_post cp ON cm.id = cp.post_id 
WHERE cp.cat_id = 1;
于 2013-01-08T14:26:25.353 に答える