2017-07-28 81 views
0

目前我正在試圖創建一個SQL語句,讓我從兩個表中檢索信息,與第三個擁有每個表的post_id和方式。這將讓我知道哪個表post_id是從。SQL - 從兩個表中獲取的元素,與第三表中的所有行

ALL_POSTS:

id PRIMARY KEY, 
post_id (FOREIGN KEY) 
type 

電影:

post_id 
type 
title 

MUSIC:

post_id 
type 
title 
band 

這是我使用的SQL語句:

SELECT a.*, b.*, c.* FROM ALL_POSTS as a, MOVIES as b, MUSIC as c WHERE (a.post_id = b.id AND a.type = b.type) OR (a.post_id = c.id AND a.type = c.type) 

的問題是,它獲取了不少成果,和所有的人都從音樂臺,其中大部分是重複的。

謝謝

+0

您能否提供一小組示例數據以及您在查詢該數據時所期望的結果。 – JeffUK

回答

1

您應該使用留下兩個表JOIN。這樣,它將返回ALL_POSTS表上的所有行以及MOVIESMUSIC表上的相應細節。

SELECT * FROM ALL_POSTS AS A 
    LEFT JOIN MOVIES AS B ON A.post_id = B.post_id AND A.type = B.type 
    LEFT JOIN MUSIC AS C ON A.post_id = B.post_id AND A.type = C.type 
+0

這工作,謝謝;) – user7122079

0

目前您正在生成三個表中的笛卡爾產品。使用JOIN!而非:

SELECT A.*, B.*, C.* FROM ALL_POSTS AS A 
LEFT JOIN MOVIES AS B ON A.post_id = B.ID AND A.type = B.type 
LEFT JOIN MUSIC AS c ON A.post_id = C.ID AND A.type = C.type 
相關問題