【发布时间】:2018-02-28 04:16:18
【问题描述】:
我有两个不同的功能 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 语句,以便将 assets.name 正确链接回此处列出的最后一个 LEFT JOIN。问题是有两个名为 ASSET.NAME 的列和两个 ASSET 表,我相信。我不确定如何在 SELECT 语句中调用“ASSET_DATA_1”表中的“ASSET.NAME”数据,而不仅仅是获取第一个 Asset 表的副本。 我四处寻找答案,并尝试了诸如括号中的 SELECT 语句和 UNION 命令之类的方法,但这些似乎都不是答案。 SQL noob 并对此感到有些不知所措。
【问题讨论】:
标签: mysql select duplicates