2013-01-08 78 views
1

我有3個表選擇外鍵的MySQL

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 

我要選擇從表釐米,其ID就在於在特定cat_post.cat_id所有記錄。

假設cat_id爲1,從表cm_中選擇cat_post表中post_id爲cat_id 1的所有記錄。

我用這個查詢但這兩次(重複行)將返回所有行

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

什麼是cm表?分類?帖子?還有別的嗎? –

+0

釐米有關的帖子,並cat_post有多少職位是在一個類別中的參考和多少種類是在一個崗位 – Nandla

回答

0

試試這個:

SELECT DISTINCT cm.* 
FROM cm 
INNER JOIN cat_post cp ON cm.id = cp.post_id 
WHERE cp.cat_id = 1; 
+0

感謝Saharsh ... – Nandla

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 
     ) ; 
+0

SELECT釐米。* FROM 釐米 WHERE EXISTS (SELECT * FROM cat_post AS cp WHERE cp.cat_id = 1 AND cp.post_id = cm.id ); 這對我有用。謝謝 – Nandla

+0

@MahmoudGamal你正在加入('cat_post'和'cm')'cat_id',而我認爲OP意味着連接在'post_id'上。 –