作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在一个表上有两列引用第二个表上的同一列,以便获得与指定 ID 相关的名称。
下面是我正在使用但不起作用的查询。 invTypes 上的两个 LEFT JOINS 导致了问题。我读了又读,并为此绞尽脑汁。我一辈子都想不出如何让它返回属于出现在主表中两个不同位置的 ID 的名称。
没有发布整个数据库结构(这是巨大的)的注意事项
typeID
和 itemTypeID
都出现在主表中。其中每一个都引用 invTypes
表中相同的 typeID
列。 invTypes
表包含对应于所述 ID 的名称。
此外,在语句的 SELECT 部分,typeName
来自 invTypes
而 stationName
来自 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/
我是一名优秀的程序员,十分优秀!