gpt4 book ai didi

php - MySQL 在不同的列上两次连接同一个表而不会发生冲突

转载 作者:行者123 更新时间:2023-11-29 00:26:10 26 4
gpt4 key购买 nike

这是查询:

SELECT * FROM property_table AS property

INNER JOIN property_classification AS classifications
ON property.classification_id = classifications.id

INNER JOIN property_classification AS classonrequest
ON property.classonrequest_id = classonrequest.id

WHERE property.id=5000 LIMIT 1;

请注意,我在 property.classification_idproperty.classonrequest_id 两个字段上使用同一个表 property_classification

property_classification 的结构是这样的:

id | a1 | a2 | a3 | ... | d1 | d2

当我在 MySQL 查询浏览器中执行上面的查询时,我得到如下信息:

id | other 'property' fields | id | a1 | a2 | a3 | ... | id | a1 | a2 | a3 | ...

但在我的 PHP 脚本中,我返回关联的数组,并且所有重复的字段名称都被覆盖。

我想要的是查询以其表的名称返回两个连接的表,即:

classifications.id | classifications.a1 | classifications.a2 | classifications.a3

classonrequest.id | classonrequest.a1 | classonrequest.a2 | classonrequest.a3

我该怎么做?

最佳答案

您需要使用表别名并重命名列:

SELECT classifications.id as cid,
classifications.a1 as c_a1,
. . .
classificaitions.d2 as c_d2
classonrequest.a1 as cr_a1,
. . .
FROM property_table AS property
INNER JOIN property_classification AS classifications
ON property.classification_id = classifications.id
INNER JOIN property_classification AS classonrequest
ON property.classonrequest_id = classonrequest.id
WHERE property.id=5000
LIMIT 1;

为了使您的工作更轻松,您可以运行如下查询:

select concat('c_', column_name, ', ')
from information_schema.columns
where table_name = 'classification';

这将列出第一组的所有列名称(您可以使用不同的前缀为第二组重复。

关于php - MySQL 在不同的列上两次连接同一个表而不会发生冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18813487/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com