2017-07-03 59 views
-1

不同的表,所以我有一個信息表,我想選擇使用條件使用PL SQL

TABLE_1 
id 
name 

和許多其他的表與同類型的數據

TABLE_x 
id 
order 

TABLE_y 
id 
order 

的.. 。

TABLE_z 
id 
order 

我想:根據該名稱來自TABLE_1我想訪問其他表的att命令。

例子:

TABLE_1 
name = x 

我想訪問TABLE_X和檢查訂單。 但如果

TABLE 1 
name = z 

我想訪問TABLE_z等

我想到了這片:

SELECT * 
FROM TABLE_1 
INNER JOIN (
CASE (SELECT name FROM TABLE_1) 
WHEN 'x' THEN TABLE_x on TABLE_1.id=TABLE_x.id 
WHEN 'y' THEN TABLE_y on TABLE_1.id=TABLE_y.id 
WHEN 'z' THEN TABLE_z on TABLE_1.id=TABLE_z.id) 

我不能在這裏使用case語句。

需要你的幫助!

+0

我們不是一個代碼寫作服務。請參考[如何提出一個好問題?](https://stackoverflow.com/help/how-to-ask)。你有沒有試過做任何研究?你有什麼嘗試?這裏的問題應該有一個明確的問題/問題,顯示的研究和[最小,完整和可驗證](https://stackoverflow.com/help/mcve)示例。 – GrumpyCrouton

回答

0

我不建議什麼緊跟,但一個可能的解決方案仔細一看:

-- NOT RECOMMENDED... 
WITH t1 AS (
    SELECT MIN(name) name FROM table_1 
) 
SELECT table_x.ordr FROM t1 JOIN table_x ON ('x' = t1.name) 
UNION ALL 
SELECT table_y.ordr FROM t1 JOIN table_y ON ('y' = t1.name) 
UNION ALL 
SELECT table_z.ordr FROM t1 JOIN table_z ON ('z' = t1.name) 
/

如果你想想數據庫需要做些什麼來滿足該查詢,你會發現它的大量的個人查詢,其中至多有一個返回數據。 這可能是很多工作,這就是爲什麼它不被推薦。您最好對table_1運行初始查詢,結果驅動後續查詢的目標。用sqlplus,你可能會選擇這樣的:

COLUMN name NEW_VALUE name NOPRINT 
SELECT MIN(name) name FROM table_1 
/
SELECT ordr FROM table_&&name 
/

做想一想一些錯誤情況,比如當從查詢1名不匹配任何現有的表,或如果在TABLE_1沒有行。

+0

謝謝您的回覆!我會檢查。 – user1958622