2017-06-15 35 views
0

像這樣UNION並加入3個表,其中一人不具有相同的行數

$query = " 
SELECT t1.title, t1.content, t2.image, t2.tags 
FROM blog1posts t1, blog1imagestags t2 
WHERE id = :id 

UNION ALL 

SELECT t1.title, t1.content, t2.image, t2.tags 
FROM blog2posts t1, blog2imagestags t2 
WHERE id = :id 

UNION ALL //THE PROBLEM 

SELECT t1.title, t1.content, t2.tags 
FROM blog2posts t1, blog3imagestags t2 
WHERE id = :id 
"; 

我UNION或如何加入與查詢的最後一部分的查詢?

回答

2

你可以試試這個(添加第三UNION一個空場):

SELECT t1.title, t1.content, t2.image, t2.tags 
FROM blog1posts t1, blog1imagestags t2 
WHERE id = :id 

UNION ALL 

SELECT t1.title, t1.content, t2.image, t2.tags 
FROM blog2posts t1, blog2imagestags t2 
WHERE id = :id 

UNION ALL 

SELECT t1.title, t1.content, '' AS image, t2.tags 
FROM blog2posts t1, blog3imagestags t2 
WHERE id = :id 
+0

這難道不慢的表現?或者這是否讓它跳過這個領域的過程? –

+0

「讓它跳過這個領域的過程」是什麼意思? – etsa

+0

就好像這個過程不會讀取它一樣,在DB中它不會去搜索其中的'''',即使這個行本身不存在。 –

相關問題