我具有以下表結構:SQL複雜條件
用戶
userID (Primary Key),
firstName,
lastName.
Sample data:
[1, John, Smith]
[2, Steve, Lan]
[3, Matt, Smith]
消息
messageID (Primary Key),
sender_userID,
receiver_userID,
messageBody,
message-visibile
消息分享範圍可以在0(公衆)或1(私人)
Samp le數據:
[messageID=1, sender_userID=1, receiver_userID=1, messageBody=Hello, message-visibile=1]
[2, 1, 2, Second Message, 0]
[3, 2, 1, ThirdMessage, 1]
[4, 2, receiver_userID=1, FourthMessage, 0]
[5, 3, 3, LastMessage, 0]
現在,我需要根據message_visible值(0/1)顯示由用戶ID和他的同事發佈/接收的所有消息。 在上面的示例數據中,userID 1是userID 2的同事。因此,如果我使用message_visible = 1查詢userID = 1,那麼我應該只獲取消息ID 1,3。 MessageID = 5不應該出現,因爲3不是任何人的同事。
我曾嘗試下面的查詢,但它沒有返回預期的輸出:
select
mes.MessageId,
usr1.sender_userID SenderUserId,
usr1.firstName SenderFirstName,
usr1.lastName SenderLastName,
usr2.userID ReceiverUserId,
usr2.firstName ReceiverFirstName,
usr2.lastName ReceiverLastName,
mes.messageBody
from Message mes
join Users usr1 on
mes.sender_userID = usr1.userId
join Users usr2 on
mes.receiver_userID = usr2.userId
where
mes.sender_userID = 1 and mes.receiver_userID in (1,2) or
mes.receiver_userID = 1 and mes.sender_userID in (1,2)
AND mes.message-visibile = 1
此外,在另一種情況之下,它不工作
where
mes.sender_userID in (1,2) or
mes.receiver_userID in (1,2)
我路過的同事一組ID 。我錯過了什麼嗎?
的作品。再次感謝 – johnk1