&引用;“非唯一表/别名”;在MySQL中

&引用;“非唯一表/别名”;在MySQL中,mysql,join,unique,alias,Mysql,Join,Unique,Alias,下面的代码为我提供了非唯一的表/别名:“演示文稿” 我读过几篇关于这方面的文章,我很确定解决方案是在我的表中使用别名。我只是不明白如何创建别名,或者应该在哪里添加别名 有人能给我解释一下吗 谢谢 SELECT categories.name, categories.sub_name, parts.name FROM categories INNER JOIN presentations ON categories.id=presentations.category INNER JOIN pres

下面的代码为我提供了非唯一的表/别名:“演示文稿”

我读过几篇关于这方面的文章,我很确定解决方案是在我的表中使用别名。我只是不明白如何创建别名,或者应该在哪里添加别名

有人能给我解释一下吗

谢谢

SELECT categories.name, categories.sub_name, parts.name
FROM categories
INNER JOIN presentations
ON categories.id=presentations.category
INNER JOIN presentations
ON parts.id=presentations.parts
WHERE presentations.id=5;

在表名或字段名之后,您可以指定别名并使用它

SELECT C.name, C.sub_name, PT.name
FROM categories C
INNER JOIN presentations P
ON C.id=P.category
INNER JOIN parts PT
ON PT.id=P.parts
WHERE P.id=5;

在上面的示例中,
C
PT
p
分别是
类别
表示
部分
表的别名。

在表名或字段名之后,您可以给出别名,并且可以使用它

SELECT C.name, C.sub_name, PT.name
FROM categories C
INNER JOIN presentations P
ON C.id=P.category
INNER JOIN parts PT
ON PT.id=P.parts
WHERE P.id=5;

在上面的示例中,
C
PT
p
分别是
类别
表示
部分
表的别名。

在表名或字段名之后,您可以给出别名,并且可以使用它

SELECT C.name, C.sub_name, PT.name
FROM categories C
INNER JOIN presentations P
ON C.id=P.category
INNER JOIN parts PT
ON PT.id=P.parts
WHERE P.id=5;

在上面的示例中,
C
PT
p
分别是
类别
表示
部分
表的别名。

在表名或字段名之后,您可以给出别名,并且可以使用它

SELECT C.name, C.sub_name, PT.name
FROM categories C
INNER JOIN presentations P
ON C.id=P.category
INNER JOIN parts PT
ON PT.id=P.parts
WHERE P.id=5;

在上面的示例中,
C
PT
p
分别是
类别
表示
部分
表的别名。

您加入同一个表两次,因此需要提供唯一的别名。但是,看起来您正在查找
部分
表,因此需要加入该表

SELECT 
categories.name, 
categories.sub_name, 
parts.name
FROM categories
INNER JOIN presentations ON categories.id=presentations.category
INNER JOIN parts ON parts.id=presentations.parts
WHERE presentations.id=5;
为了更好的可读性,你可以给一些简短的别名,比如

select
c.name,
c.sub_name,
p.name as parts_name
from categories c
join presentations pr on pr.category = c.id
join parts p on p.id = pr.parts
where pr.id = 5

您两次加入同一个表,因此需要提供唯一的别名。但是,看起来您正在查找
部分
表,因此需要加入该表

SELECT 
categories.name, 
categories.sub_name, 
parts.name
FROM categories
INNER JOIN presentations ON categories.id=presentations.category
INNER JOIN parts ON parts.id=presentations.parts
WHERE presentations.id=5;
为了更好的可读性,你可以给一些简短的别名,比如

select
c.name,
c.sub_name,
p.name as parts_name
from categories c
join presentations pr on pr.category = c.id
join parts p on p.id = pr.parts
where pr.id = 5

您两次加入同一个表,因此需要提供唯一的别名。但是,看起来您正在查找
部分
表,因此需要加入该表

SELECT 
categories.name, 
categories.sub_name, 
parts.name
FROM categories
INNER JOIN presentations ON categories.id=presentations.category
INNER JOIN parts ON parts.id=presentations.parts
WHERE presentations.id=5;
为了更好的可读性,你可以给一些简短的别名,比如

select
c.name,
c.sub_name,
p.name as parts_name
from categories c
join presentations pr on pr.category = c.id
join parts p on p.id = pr.parts
where pr.id = 5

您两次加入同一个表,因此需要提供唯一的别名。但是,看起来您正在查找
部分
表,因此需要加入该表

SELECT 
categories.name, 
categories.sub_name, 
parts.name
FROM categories
INNER JOIN presentations ON categories.id=presentations.category
INNER JOIN parts ON parts.id=presentations.parts
WHERE presentations.id=5;
为了更好的可读性,你可以给一些简短的别名,比如

select
c.name,
c.sub_name,
p.name as parts_name
from categories c
join presentations pr on pr.category = c.id
join parts p on p.id = pr.parts
where pr.id = 5


谢谢所以问题与别名无关,而是我把两个表连接错了?我想我加入了“parts”-表,其中包括:
parts上的内部联接演示文稿。id=演示文稿。parts
我还想知道为什么只为所选三列中的一(1)列添加了
作为parts\u name
?是的,这就是问题所在,但是当您多次加入同一个表时,以后可能需要它,请确保为联接指定唯一的别名,否则您将得到与上述相同的错误!现在,我添加了
parts\u name
,这样在获取数据时应用程序脚本就可以知道它获取的是哪一项,如果将其保留为
name
,则两个表中有两个名称,并且在显示数据时可能会发生冲突。但是如果将
删除为parts\u name
,它仍然会显示
p.name
,如果
c.name
足够,哪一个应该足够?即使我将
作为parts\u name
删除,您的脚本仍能工作。这将出现在您的mysql终端或phpmyadmin中,但在应用程序级别,在PHP中,它将引用
name
作为索引。哦,现在我明白了!我忘了。非常感谢您的解释。谢谢!所以问题与别名无关,而是我把两个表连接错了?我想我加入了“parts”-表,其中包括:
parts上的内部联接演示文稿。id=演示文稿。parts
我还想知道为什么只为所选三列中的一(1)列添加了
作为parts\u name
?是的,这就是问题所在,但是当您多次加入同一个表时,以后可能需要它,请确保为联接指定唯一的别名,否则您将得到与上述相同的错误!现在,我添加了
parts\u name
,这样在获取数据时应用程序脚本就可以知道它获取的是哪一项,如果将其保留为
name
,则两个表中有两个名称,并且在显示数据时可能会发生冲突。但是如果将
删除为parts\u name
,它仍然会显示
p.name
,如果
c.name
足够,哪一个应该足够?即使我将
作为parts\u name
删除,您的脚本仍能工作。这将出现在您的mysql终端或phpmyadmin中,但在应用程序级别,在PHP中,它将引用
name
作为索引。哦,现在我明白了!我忘了。非常感谢您的解释。谢谢!所以问题与别名无关,而是我把两个表连接错了?我想我加入了“parts”-表,其中包括:
parts上的内部联接演示文稿。id=演示文稿。parts
我还想知道为什么只为所选三列中的一(1)列添加了
作为parts\u name
?是的,这就是问题所在,但是当您多次加入同一个表时,以后可能需要它,请确保为联接指定唯一的别名,否则您将得到与上述相同的错误!现在,我添加了
parts\u name
,这样在获取数据时应用程序脚本就可以知道它获取的是哪一项,如果将其保留为
name
,则两个表中有两个名称,并且在显示数据时可能会发生冲突。但是如果将
删除为parts\u name
,它仍然会显示
p.name
,如果
c.name
足够,哪一个应该足够?即使我将
作为parts\u name
删除,您的脚本仍然可以工作。这将出现在您的mysql终端或phpmyadmin中,但在应用程序级别,比如在PHP中,它将引用
name