簡體   English   中英

檢查連接表中是否不存在ID

[英]check if id not exist in join table

我有兩張桌子。 表I和表II包含的消息包含用戶名ID和消息ID。 在看到表II中記錄的消息后,我做了每個用戶。 如果用戶尚未閱讀消息,我想通知。 最快,最有效的方法是什么?

tbl_msg
id    title   msg  user_id ucid all
1     msg1    text  *        *
2     msg2    text

tbl_msg_log
id  user_id   msg_id
1     2         2
2     1         2

我知道使用foreach太舊了。 所以我怎么能加入兩個表並檢查表msg日志中是否不存在user_id和msg_id?

更新1

我用這個SQL,但不起作用:

$get_msg_notifiction = $pdo->query("SELECT * FROM `tbl_msg` WHERE (`user_id`='$user[id]' OR `ucid`='$user[group_id]' OR `all`='1') AND NOT EXISTS (SELECT id FROM tbl_msg_log WHERE tbl_msg.id = tbl_msg_log.msg_id AND tbl_msg_log.user_id = $user[id])");

返回:

Fatal error: Call to a member function execute()

使用不存在:

select * from tbl_msg
where not exists (select 1 from tbl_msg_log
                  where tbl_msg.id = tbl_msg_log.msg_id)

如果您確實必須加入:

select tbl_msg.*
from tbl_msg left join tbl_msg_log
                  on tbl_msg.id = tbl_msg_log.msg_id
where tbl_msg_log.msg_id is null

這列出了尚未閱讀的消息

SELECT tbl_msg.*
FROM tbl_msg_log 
LEFT JOIN tbl_msg 
     ON tbl_msg_log.msg_id=tbl_msg.id
WHERE tbl_msg.id IS NULL

暫無
暫無

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

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