2012-08-13 14 views
0

一個在那裏我有以下SQL:兩個內連接以及對第一條款

SELECT * FROM wp_postmeta 
INNER JOIN wp_term_relationships ON wp_postmeta.post_id = wp_term_relationships.object_id AND wp_term_relationships.term_taxonomy_id = '10' 
INNER JOIN wp_posts ON wp_postmeta.post_id = wp_posts.id WHERE wp_posts.post_date BETWEEN CONCAT(CURDATE(),' 10:00:00') AND CONCAT(CURDATE(),' 18:00:00') 
WHERE wp_postmeta.meta_key = '_shipping_country' AND wp_postmeta.meta_value IN ('AU', 'US', 'JP', 'BR', 'UK') 
ORDER BY wp_postmeta.post_id DESC 

有什麼理由不工作,但如果我刪除它工作正常,第二INNER JOIN

回答

2

內連接條件中不能有WHERE

SELECT * FROM wp_postmeta 

INNER JOIN wp_term_relationships ON wp_postmeta.post_id = wp_term_relationships.object_id AND wp_term_relationships.term_taxonomy_id = '10' 
INNER JOIN wp_posts ON wp_postmeta.post_id = wp_posts.id AND wp_posts.post_date BETWEEN CONCAT(CURDATE(),' 10:00:00') AND CONCAT(CURDATE(),' 18:00:00') 
WHERE wp_postmeta.meta_key = '_shipping_country' AND wp_postmeta.meta_value IN ('AU', 'US', 'JP', 'BR', 'UK') 
ORDER BY wp_postmeta.post_id DESC 
+0

打我吧! ;) – 2012-08-13 13:22:34

0

你有兩個'WHERE'語句。這可能是一個問題:)

0

是的:雖然可能有一些wp_postmeta有相應的wp_term_relationships,並且一些有wp_posts,但都沒有。

要了解更多關於你的數據,改變你的加入到LEFT JOIN

0

你不能在同一個查詢的兩個WHERE條款。

所有你需要做的是無論是移動第一WHERE條件到現有的條款,或者只是讓一個AND的加入:

或者:

SELECT * FROM wp_postmeta 
INNER JOIN wp_term_relationships ON wp_postmeta.post_id = wp_term_relationships.object_id AND wp_term_relationships.term_taxonomy_id = '10' 
INNER JOIN wp_posts ON wp_postmeta.post_id = wp_posts.id AND wp_posts.post_date BETWEEN CONCAT(CURDATE(),' 10:00:00') AND CONCAT(CURDATE(),' 18:00:00') 
WHERE wp_postmeta.meta_key = '_shipping_country' AND wp_postmeta.meta_value IN ('AU', 'US', 'JP', 'BR', 'UK') 
ORDER BY wp_postmeta.post_id DESC 

或者:

SELECT * FROM wp_postmeta  
INNER JOIN wp_term_relationships ON wp_postmeta.post_id = wp_term_relationships.object_id AND wp_term_relationships.term_taxonomy_id = '10' 
INNER JOIN wp_posts ON wp_postmeta.post_id = wp_posts.id 
WHERE wp_postmeta.meta_key = '_shipping_country' AND wp_postmeta.meta_value IN ('AU', 'US', 'JP', 'BR', 'UK') 
AND wp_posts.post_date BETWEEN CONCAT(CURDATE(),' 10:00:00') AND CONCAT(CURDATE(),' 18:00:00') 
ORDER BY wp_postmeta.post_id DESC