我的SQL查询有什么问题

问题描述:

我想从两个单独的表中选择,并试图通过两个不同的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

我更新了帖子,请看看 –

下面是有效查询的示例。它不能成为你想要的查询,因为像你自己的查询一样,它基本上是无意义的。但是,我们不能知道你真正想要的查询是在这个阶段...

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'; 

查询是没有意义的,因为一般没有一点您可以从中选择没有列外侧连接表。

您需要创建别名,如果你打算使用同一台不止一次在相同的查询。你的查询应该是。

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