簡體   English   中英

根據另一個單元格的值在查詢中連接mysql表

[英]Joining a mysql table in a query depending on the value of another cell

請我需要幫助,我有三個mysql表, studentsstaffmessage message表中,我有message_from_cat列,如果消息來自教職員工,則保留1如果消息來自學生,則保留2

我還有一個message_from列,其中包含發件人(無論是工作人員還是學生)的id

現在,這是我想要實現的偽代碼。

select * from message left join students on message.message_from=student.student_id where message_from_cat=2
and left join staff on message.message_from=staff.staff_id where message_from=1.

請問有人了解我的問題嗎?

請記住,當您離開外部聯接時,即使id未出現在聯接表(“學生”或“職員”)中,您也會從左側表(“消息”)獲得所有行。

這意味着您可以在FROM子句中連接這兩個表,然后僅使用case語句或coalesce()來選擇哪個連接表具有所需的列。

跟隨你的偽:

select 
    message.*, 
    COALESCE(staff.staff_column, student.student_column) as staff_or_student
from message
    left join students 
        on message.message_from=student.student_id 
           and message.message_from_cat=1
    left join staff 
        on message.message_from=staff.staff_id
           and message.message_from_cat=2

我不確定您需要什么。 你可以試試

select * from message 
left join students on   message.message_from=student.student_id
where message_from_cat=2 
UNION
SELECT * 
FROM message
left join staff on message.message_from=staff.staff_id 
where message_from=1

要么

select *
from message left join students on message.message_from=student.student_id 
left join staff on message.message_from=staff.staff_id 
where message_from=1
AND message_from_cat=2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM