Php 我的sql查询有什么问题

Php 我的sql查询有什么问题,php,mysql,Php,Mysql,我正在尝试从两个单独的表中进行选择,并且还尝试通过两个不同的ID左键连接不同的表 我不断地发现这个错误: 1066-非唯一表/别名:“wp\U术语\U分类法” 如果要在同一查询中多次使用同一表,则需要创建别名。您的查询应该是 SELECT wp_terms.name, wp_terms.slug, wp_ads_categories.seo_description FROM wp_terms, wp_ads_categories LEFT JOIN wp_term_taxo

我正在尝试从两个单独的表中进行选择,并且还尝试通过两个不同的ID左键连接不同的表

我不断地发现这个错误:

1066-非唯一表/别名:“wp\U术语\U分类法”


如果要在同一查询中多次使用同一表,则需要创建别名。您的查询应该是

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'

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

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

该查询是无意义的,因为通常没有从中选择任何列的点外部联接表

如果有什么问题,你会得到一个错误,或者你会得到意想不到的结果。是哪一个?你得到了什么,有错误吗?我更新了帖子,请看一看你加入了两次wp_term_分类法。在WHERE子句中应该使用哪一个呢?错误消息是不言自明的,不是吗?。。相应的左连接将是一个内部连接JOIN@Strawberry不一定对吧?对于给定的联接条件,表wp_terms和wp_ads_categories可能具有表wp_term_分类法中可能不存在的记录。在这种情况下,如果我需要从wp_terms和wp_ads_categories中获取所有记录,不管它们是否出现在第三个表中,我将不得不放置一个左外部联接。我遗漏了什么吗?你遗漏了什么。连接是内部连接,或者WHERE条件需要移动到JOIN子句。这可以通过在代表性查询上运行EXPLAIN EXTENDED,然后显示警告来演示;是的,你是对的。通过添加where子句,左到左外部联接没有任何用途。如果我们需要一个真正的外部联接,则应该在join on子句中添加条件。
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';