我的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'
下面是有效查询的示例。它不能成为你想要的查询,因为像你自己的查询一样,它基本上是无意义的。但是,我们不能知道你真正想要的查询是在这个阶段...
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'
..和相应的LEFT JOIN将会是一个INNER JOIN – Strawberry
@Strawberry不一定正确吗?对于给定的连接条件,表wp_terms和wp_ads_categories可能具有可能不存在于表wp_term_taxonomy中的记录。在这种情况下,如果我需要从'wp_terms'和'wp_ads_categories'中获取所有记录,不管它们是否出现在第三个表中,我将不得不进行左(外部)连接。 我错过了什么吗? –
你错过了一些东西。 JOIN是INNER之一,或者WHERE条件需要移动到JOIN子句。这可以通过在代表性查询上运行EXPLAIN EXTENDED来演示,然后显示SHOW WARNINGS; – Strawberry
如果出现问题,您会收到错误消息,否则会得到意想不到的结果。这是什么? – tadman
你会得到什么错误? –
我更新了帖子,请看看 –