我有 3 張桌子user, student_data, teacher_data. 用戶可以是學生或教師。如果是我想加入的老師user和teacher_data。如果是學生,那么我想user加入student_data。
我怎樣才能做到這一點加入條件。
uj5u.com熱心網友回復:
我會在一個子查詢中組合這兩個資料表,然后將用戶加入其中。
SELECT
*
FROM
usr u
LEFT JOIN
(
SELECT user_id, datum, xxx, NULL AS yyy FROM student_data
UNION ALL
SELECT user_id, datum, NULL, yyy FROM teacher_data
)
d
ON d.user_id = u.id
https://dbfiddle.uk/?rdbms=oracle_21&fiddle=9b801ea739d42fe50c00ef4e17eaf143
筆記:
- 從兩個資料表中選擇的列必須匹配
- 必須跳過任何不匹配的列或用 NULL 填充
- 請不要呼叫 table
user,它是保留關鍵字,Oracle 不允許。
uj5u.com熱心網友回復:
你可以這樣寫:
select u.user_id,
s.student_id,
t.teacher_id
from usr u
left join student_data s on u.user_id=s.student_id
left join teacher_data t on u.user_id=t.teacher_id
where s.student_id is not null or t.teacher_id is not null
order by u.user_id
對于每個 user_id,檢查他是學生還是教師,如果他是學生,則獲取他的學生列值,否則為 null,如果他是教師,則獲取他的教師列值,否則為 null。
uj5u.com熱心網友回復:
也許嘗試一個工會 - 像這樣
select user_id, user_other_stuff
from user, student_data
where user.user_id = student_data.user_id
UNION
select user_id, user_other_stuff
from user, teacher_data
where user.user_id = teacher_data.user_id
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/472553.html
