0

我有一个 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
4

1 回答 1

0

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

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 ...

于 2012-08-30T11:44:29.843 回答