我有一个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_1
,category_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
答案 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 ...
的替代。