這個問題類型的鏈接 my previous question.的Oracle SQL:子查詢查詢同一列兩次不同的條件下,從多張表
我試圖打破它一點剛剛得到的最後兩列有組織,無重複。
我試圖做類似最受好評的解決方案上的東西this site.
我使用的過人之處查詢生成器,試圖做到這一點,因爲我不超出SQL和數據庫的簡單基本操作,熟悉。
聲明目前:
SELECT WORK_CENTER.EQNO,
(
SELECT
UD_DATA.CUSER AS U1
FROM UD_DATA
FULL OUTER JOIN
WORK_CENTER
ON UD_DATA.PARENT_ID = WORK_CENTER.ID
LEFT JOIN
UD_COLS
ON UD_DATA.UD_COLS_ID = UD_COLS.ID
WHERE UD_COLS.ID='16'
),
(
SELECT
UD_DATA.CUSER AS U2
FROM UD_DATA
FULL OUTER JOIN WORK_CENTER ON UD_DATA.PARENT_ID = WORK_CENTER.ID
LEFT JOIN UD_COLS ON UD_DATA.UD_COLS_ID = UD_COLS.ID
WHERE UD_COLS.ID='17'
)
FROM
IQMS.UD_DATA UD_DATA
FULL OUTER JOIN
IQMS.WORK_CENTER WORK_CENTER
ON WORK_CENTER.ID=UD_DATA.PARENT_ID
LEFT OUTER JOIN
IQMS.UD_COLS UD_COLS
ON
UD_DATA.UD_COLS_ID = UD_COLS.ID
ORDER BY WORK_CENTER.EQNO
所需的結果:
EQNO | U1 | U2
-----+------+------
001 | 1000 | test1
002 | 2000 | test2
003 | 3000 | test3
004 | 4000 | test4
但我目前得到
ORA-01427:單行子查詢返回多個行 感謝Pattrick培根。指出了我俯瞰有LEFT JOIN JOIN
在鏈接的問題有人提出,錯誤輸出的原因是由於這兩個表是交叉連接,我試着在網上得到它的理解和我除了嘗試這個之外,無法真正看到解決方案。
我沒有改變太多的子查詢本身,但我顯然做錯了什麼。任何人都可以提供幫助嗎?
有人問更多的例子
從我的鏈接的問題:
這是期望的結果(不顯示爲嚴重的格式化表格空白列和道歉):
EQNO | CNTR_TYPE | CNTR_DESC | MFGCELL | MFG_TYPE | CUSER | U2
001 | 110T-40MM | DEMAG SYSTEM 110-430 | MOLDING | INJECTION | 1000 | test1
002 | 150T-25MM | DEMAG SYSTEM 150-320 | MOLDING | INJECTION | 2000 | test2
003 | 150T-45MM | DEMAG SYSTEM 150-610 | MOLDING | INJECTION | 3000 | test3
005 | 150T-45MM | DEMAG EXTRA 500-610 | MOLDING | INJECTION | 4000 | test4
但是我得到的是:
EQNO | CNTR_TYPE | CNTR_DESC | MFGCELL | MFG_TYPE | CUSER | U2 | E2
001 | 110T-40MM | DEMAG SYSTEM 110-430 | MOLDING | INJECTION | 1000 | test1 | 001
001 | 110T-40MM | DEMAG SYSTEM 110-430 | MOLDING | INJECTION | 1000 | test2 | 002
001 | 110T-40MM | DEMAG SYSTEM 110-430 | MOLDING | INJECTION | 1000 | test3 | 003
001 | 110T-40MM | DEMAG SYSTEM 110-430 | MOLDING | INJECTION | 1000 | test4 | 005
002 | 150T-25MM | DEMAG SYSTEM 150-320 | MOLDING | INJECTION | 2000 | test1 | 001
002 | 150T-25MM | DEMAG SYSTEM 150-320 | MOLDING | INJECTION | 2000 | test2 | 002
002 | 150T-25MM | DEMAG SYSTEM 150-320 | MOLDING | INJECTION | 2000 | test3 | 003
002 | 150T-25MM | DEMAG SYSTEM 150-320 | MOLDING | INJECTION | 2000 | test4 | 005
003 | 150T-45MM | DEMAG SYSTEM 150-610 | MOLDING | INJECTION | 3000 | test1 | 001
003 | 150T-45MM | DEMAG SYSTEM 150-610 | MOLDING | INJECTION | 3000 | test2 | 002
003 | 150T-45MM | DEMAG SYSTEM 150-610 | MOLDING | INJECTION | 3000 | test3 | 003
003 | 150T-45MM | DEMAG SYSTEM 150-610 | MOLDING | INJECTION | 3000 | test4 | 005
005 | 150T-45MM | DEMAG EXTRA 500-610 | MOLDING | INJECTION | 4000 | test1 | 001
005 | 150T-45MM | DEMAG EXTRA 500-610 | MOLDING | INJECTION | 4000 | test2 | 002
005 | 150T-45MM | DEMAG EXTRA 500-610 | MOLDING | INJECTION | 4000 | test3 | 003
005 | 150T-45MM | DEMAG EXTRA 500-610 | MOLDING | INJECTION | 4000 | test4 | 005
聯盟並不真正起作用,因爲它只是將兩列「CUSER」和「CUSER AS U2」放在一起,因爲它們確實是同一列。
添加更多的樣本數據
下面是來自UD_DATA表位
ID | UD_COLS_ID|PARENT_ID|CUSER
-------+-----------+---------+------
12312 | 16 | 5210 | 1000
12313 | 17 | 5210 | test1
12314 | 16 | 5212 | 2000
12315 | 17 | 5212 | test2
12316 | 16 | 5213 | 3000
12317 | 17 | 5213 | test4
12318 | 16 | 5214 | 4000
12319 | 17 | 5214 | test4
我的主要問題是隻顯示來自CUSER列中的日期爲
|COL1 | COL2|
+-----+-----+
| 1000|test1|
| 2000|test2|
| 3000|test3|
| 4000|test4|
但從鏈接的問題,我得到了這樣的:
|COL1 | COL2|
+-----+-----+
| 1000|test1|
| 1000|test2|
| 1000|test3|
| 1000|test4|
| 2000|test1|
| 2000|test2|
| 2000|test3|
| 2000|test4|
| 3000|test1|
| 3000|test2|
| 3000|test3|
| 3000|test4|
這就是我一直在試圖解決
究竟是什麼你想在這裏實現什麼?你應該提供一些樣本數據和預期結果。 – GurV
對不起。我現在要做。這主要是在相關問題中。我不知道如果這個問題仍然存在,問題是否仍然存在。我目前正在嘗試顯示實際來自同一列的兩列,但是通過不同的條件進行了過濾。但不是4行我得到16 – spyr0
如果您可以提供表格中的樣本數據以生成您所期望的輸出以及選擇值的邏輯,那麼這將非常有幫助。 – Boneist