2017-10-13 153 views
-1

我想從兩個單獨的表中選擇,並試圖通過兩個不同的ID來加入不同的表。我的SQL查詢有什麼問題

我不斷收到此錯誤:

#1066 - Not unique table/alias: 'wp_term_taxonomy'

SELECT wp_terms.name, 
    wp_terms.slug, 
    wp_ads_categories.seo_description 
FROM wp_terms, wp_ads_categories 
LEFT JOIN wp_term_taxonomy ON wp_terms.term_id = wp_term_taxonomy.term_id 
LEFT JOIN wp_term_taxonomy ON wp_ads_categories.term_id = wp_term_taxonomy.term_id 
WHERE wp_term_taxonomy.taxonomy = 'product_cat' 
+0

如果出現問題,您會收到錯誤消息,否則會得到意想不到的結果。這是什麼? – tadman

+0

你會得到什麼錯誤? –

+0

我更新了帖子,請看看 –

回答

1

下面是有效查詢的示例。它不能成爲你想要的查詢,因爲像你自己的查詢一樣,它基本上是無意義的。但是,我們不能知道你真正想要的查詢是在這個階段...

SELECT t.name 
    , t.slug 
    , c.seo_description 
    FROM wp_terms t 
CROSS 
    JOIN wp_ads_categories c 
    LEFT 
    JOIN wp_term_taxonomy x 
    ON x.term_id = t.term_id 
    LEFT 
    JOIN wp_term_taxonomy y 
    ON y.term_id = c.term_id 
    AND y.taxonomy = 'product_cat'; 

查詢是沒有意義的,因爲一般沒有一點您可以從中選擇沒有列外側連接表。

0

您需要創建別名,如果你打算使用同一臺不止一次在相同的查詢。你的查詢應該是。

SELECT wp_terms.name, 
    wp_terms.slug, 
    wp_ads_categories.seo_description 
FROM wp_terms, wp_ads_categories 
LEFT JOIN wp_term_taxonomy tax1 ON wp_terms.term_id = tax1.term_id 
LEFT JOIN wp_term_taxonomy tax2 ON wp_ads_categories.term_id = tax2.term_id 
WHERE tax1.taxonomy = 'product_cat' 

where子句也可能是這樣的。這取決於你想如何結果集。

WHERE tax2.taxonomy = 'product_cat' 
+0

..和相應的LEFT JOIN將會是一個INNER JOIN – Strawberry

+0

@Strawberry不一定正確嗎?對於給定的連接條件,表wp_terms和wp_ads_categories可能具有可能不存在於表wp_term_taxonomy中的記錄。在這種情況下,如果我需要從'wp_terms'和'wp_ads_categories'中獲取所有記錄,不管它們是否出現在第三個表中,我將不得不進行左(外部)連接。 我錯過了什麼嗎? –

+0

你錯過了一些東西。 JOIN是INNER之一,或者WHERE條件需要移動到JOIN子句。這可以通過在代表性查詢上運行EXPLAIN EXTENDED來演示,然後顯示SHOW WARNINGS; – Strawberry