Mysql连接多个外键

时间:2012-08-30 10:58:34

标签: mysql join

我有一个PHP / MySQL应用程序,但以前的开发人员已经在数据库中完成了这个

tbl_cat columns:

cat_id | cat_name

tbl_products columns have cat_id assigned:

category_1 | category_2 | category_3

我需要做的是将tbl_cat.cat_name分配给(category_1category_2等......)

我知道这里的as是错的,但只是为了证明它必须与此类似:

SELECT * FROM tbl_products 
LEFT JOIN tbl_cat 
ON category_1=cat_id AS cat_1 
AND category_2=cat_id AS cat_2 
AND category_3=cat_id AS cat_3

1 个答案:

答案 0 :(得分:0)

使用join时的正常select语法是:

SELECT        
      table_alias_1.column_1 AS column_alias_1,
      table_alias_2.column_2 AS column_alias_2,
      table_alias_3.column_3 AS column_alias_3
FROM  table_1 AS table_alias_1
LEFT JOIN table_2 AS table_alias_2 
     ON table_alias_1.column_1 = table_alias_2.column_2
LEFT JOIN table_3 AS table_alias_3
     ON table_alias_2.column_3 = table_alias_3.column_3;

如果table_1与table_2相同并不重要,只要它们具有不同的别名就可以将表连接到自身。

您无法在select语句中声明分配**。 select语句中的=符号将被解释为比较运算符而不是赋值运算符。

**此规则有一个例外 - MySQL提供的非标准扩展,它不是ANSI-SQL的一部分,但是这用于分配将在select之外使用的值变量;赋值运算符为:=而非=;这基本上是ANSI SQL标准SELECT ... INTO ...的替代。