我有三张桌子user
,student_data
,teacher_data
。用户可以是学生,也可以是教师。如果是老师,我想加入user
和teacher_data
。如果它是一个学生,那么我想加入user
与student_data
。
我怎样才能把这个和条件结合起来。
发布于 2022-05-09 12:55:02
我会将两个数据表组合在一个子查询中,然后将用户加入其中。
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
备注:
user
,它是保留关键字,甲骨文不允许。发布于 2022-05-09 12:11:16
你可以这样写:
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,检查他是学生还是教师,如果他是学生,得到他的学生列值其他为空,如果他是教师,那么他的教师列值为其他为空。
发布于 2022-05-09 12:10:55
也许试一试工会--就像这样
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://stackoverflow.com/questions/72171744
复制相似问题