gpt4 book ai didi

mysql - 如何从两个不同的列到单独表上的同一列进行 JOIN

转载 作者:行者123 更新时间:2023-11-29 05:40:51 25 4
gpt4 key购买 nike

我在一个表上有两列引用第二个表上的同一列,以便获得与指定 ID 相关的名称。

下面是我正在使用但不起作用的查询。 invTypes 上的两个 LEFT JOINS 导致了问题。我读了又读,并为此绞尽脑汁。我一辈子都想不出如何让它返回属于出现在主表中两个不同位置的 ID 的名称。

没有发布整个数据库结构(这是巨大的)的注意事项

typeIDitemTypeID 都出现在主表中。其中每一个都引用 invTypes 表中相同的 typeID 列。 invTypes 表包含对应于所述 ID 的名称。

此外,在语句的 SELECT 部分,typeName 来自 invTypesstationName 来自 staStations 表。

主要问题是,如果 invTypes.typeName 被两列引用两次,我该如何 1:正确地将表连接到这两点和 2:我如何区分在两个 invTypes.typeName 中,如果可以进行两个 JOIN 语句,则返回。

SELECT 
`logTime`,`itemID`,`typeName`,`actorName`,`stationName`,`action`,`passwordType`,
`quantity`,`oldConfiguration`,`newConfiguration`
FROM eve_container_audit
LEFT JOIN invTypes ON eve_container_audit.typeID = invTypes.typeID
LEFT JOIN invTypes ON eve_container_audit.itemTypeID = invTypes.typeID

LEFT JOIN staStations ON eve_container_audit.locationID = staStations.stationID

最佳答案

以下是加入他们一次的方法:

SELECT 
`logTime`,
`itemID`,
`typeName`,
`actorName`,
`stationName`,
`action`,
`passwordType`,
`quantity`,
`oldConfiguration`,
`newConfiguration`
FROM
eve_container_audit
LEFT JOIN
invTypes
ON
eve_container_audit.typeID = invTypes.typeID and
eve_container_audit.itemTypeID = invTypes.typeID
LEFT JOIN
staStations
ON
eve_container_audit.locationID = staStations.stationID

如果你需要加入他们两次,使用别名:

SELECT 
`logTime`,
`itemID`,
`typeName`,
`actorName`,
`stationName`,
`action`,
`passwordType`,
`quantity`,
`oldConfiguration`,
`newConfiguration`
FROM
eve_container_audit
LEFT JOIN
invTypes
ON
eve_container_audit.typeID = invTypes.typeID
LEFT JOIN
invTypes invTypes2
ON
eve_container_audit.itemTypeID = invTypes2.typeID
LEFT JOIN
staStations
ON
eve_container_audit.locationID = staStations.stationID

关于mysql - 如何从两个不同的列到单独表上的同一列进行 JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6920802/

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