我有两个不同的功能 sql 语句需要组合。
尝试避免 SELECT 语句中出现重复名称,同时仍检索我在 SQL 查询中查找的数据。
第一个较长的查询:
Select USER.USER_NAME, ASSET.NAME AS KACE_ASSET_NAME, FIELD_31, V3.FIELD_VALUE AS CUSTOM_3, FIELD_20 AS BARCODE, FIELD_27 AS SERIAL_NUMBER
FROM ASSET
JOIN USER ON ASSET.OWNER_ID = USER.ID
JOIN ASSET_DATA_5 ON ASSET.ASSET_DATA_ID = ASSET_DATA_5.ID AND ASSET_TYPE_ID = 5
LEFT JOIN USER_FIELD_VALUE V3 ON V3.USER_ID = USER.ID AND V3.FIELD_ID = 3
LEFT JOIN ASSET ASSET_LOCATION ON ASSET_LOCATION.ID = ASSET.LOCATION_ID
LEFT JOIN ASSET_ASSOCIATION J21 ON J21.ASSET_ID = ASSET.ID AND J21.ASSET_FIELD_ID=21
LEFT JOIN ASSET A21 ON A21.ID = J21.ASSOCIATED_ASSET_ID
LEFT JOIN ASSET_DATA_1 AD21 ON AD21.ID = A21.ASSET_DATA_ID
WHERE V3.FIELD_VALUE = 'TERMINATED'
第二个较小的查询:
SELECT ASSET.NAME AS CITY
FROM ASSET_DATA_1 LEFT JOIN ASSET ON ASSET_DATA_1.ID = ASSET.ASSET_DATA_ID AND ASSET.ASSET_TYPE_ID=1
我尽最大努力将两者结合起来:
Select USER.USER_NAME, ASSET.NAME AS KACE_ASSET_NAME, FIELD_31, V3.FIELD_VALUE AS CUSTOM_3, FIELD_20 AS BARCODE, FIELD_27 AS SERIAL_NUMBER, ASSET.NAME as CITY
FROM ASSET
JOIN USER ON ASSET.OWNER_ID = USER.ID
JOIN ASSET_DATA_5 ON ASSET.ASSET_DATA_ID = ASSET_DATA_5.ID AND ASSET_TYPE_ID = 5
LEFT JOIN USER_FIELD_VALUE V3 ON V3.USER_ID = USER.ID AND V3.FIELD_ID = 3
LEFT JOIN ASSET ASSET_LOCATION ON ASSET_LOCATION.ID = ASSET.LOCATION_ID
LEFT JOIN ASSET_ASSOCIATION J21 ON J21.ASSET_ID = ASSET.ID AND J21.ASSET_FIELD_ID=21
LEFT JOIN ASSET A21 ON A21.ID = J21.ASSOCIATED_ASSET_ID
LEFT JOIN ASSET_DATA_1 AD21 ON AD21.ID = A21.ASSET_DATA_ID
#IMPORTANT JOIN HERE - NEED TO LINK THIS INFO BACK TO SELECT STATEMENT
LEFT JOIN ASSET ASSET_DATA_1 ON ASSET_DATA_1.ID = ASSET.ASSET_DATA_ID AND ASSET.ASSET_TYPE_ID=1
WHERE V3.FIELD_VALUE = 'TERMINATED'
因此尝试构建此 SELECT 语句,以便 asset.name 正确链接回此处列出的最后一个 LEFT JOIN。我相信,问题是有两列名为 ASSET.NAME 和两个 ASSET 表。我不确定如何在 SELECT 语句中调用“ASSET_DATA_1”表中的“ASSET.NAME”数据,而不只是获取第一个 Assets 表的副本。 我四处寻找答案,并尝试过诸如括号中的 SELECT 语句和 UNION 命令之类的操作,但这些似乎都不是答案。 SQL 菜鸟,对这个感到有点不知所措。
最佳答案
要删除重复项,请对所有选定的列使用分组依据。
SELECT USER.USER_NAME, ASSET.NAME AS KACE_ASSET_NAME, FIELD_31, V3.FIELD_VALUE AS CUSTOM_3, FIELD_20 AS BARCODE, FIELD_27 AS SERIAL_NUMBER
FROM ASSET
JOIN USER ON ASSET.OWNER_ID = USER.ID
JOIN ASSET_DATA_5 ON ASSET.ASSET_DATA_ID = ASSET_DATA_5.ID AND ASSET_TYPE_ID = 5
LEFT JOIN USER_FIELD_VALUE V3 ON V3.USER_ID = USER.ID AND V3.FIELD_ID = 3
LEFT JOIN ASSET ASSET_LOCATION ON ASSET_LOCATION.ID = ASSET.LOCATION_ID
LEFT JOIN ASSET_ASSOCIATION J21 ON J21.ASSET_ID = ASSET.ID AND J21.ASSET_FIELD_ID=21
LEFT JOIN ASSET A21 ON A21.ID = J21.ASSOCIATED_ASSET_ID
LEFT JOIN ASSET_DATA_1 AD21 ON AD21.ID = A21.ASSET_DATA_ID
WHERE V3.FIELD_VALUE = 'TERMINATED'
GROUP BY USER.USER_NAME, ASSET.NAME, FIELD_31, V3.FIELD_VALUE, FIELD_20, FIELD_27;
关于mysql - 具有重复表名的 SELECT 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49016811/