Sorunu (bir forumda okunan mesajları işaretleme) mysql bu sorgu yazma

2 Cevap php

Selam. i bir forum yazıyorum ve ben iletileri belirli bir kullanıcı okuma işaretleri bu tablo var:

`read_messages`(`message_id`,`user_id`)

mesajlar tablonun basitleştirilmiş versiyonu:

`messages`(`id`,`forum_id`,`author_id`)

Geçerli kullanıcı bu mesajı ya da okumuş olursa bana söyleyecek bir değişken eklemek için, belirli bir forum için veritabanından mesajı veri alırken, şimdi ben, güçlü olmak istiyorum. i (kullanıcı bunları okuma eğer ben bunların her biri için kontrol 1 i tüm mesajları almak,) 2 sorgu ile bunu nasıl biliyorum, ama onları bir araya olarak nasıl hiçbir ipucu. herhangi bir fikir?

2 Cevap

SELECT messages.*, read_messages.id as read_id
FROM messages 
LEFT OUTER JOIN read_messages 
   ON ( messages.id = read_messages.message_id AND read_messages.user_id  = [ USER ID ] )

read_id bir sayı> 0 ziyade NULL olarak iade edilirse o kullanıcı için read_messages karşılık gelen bir kayıt yoktur, çünkü o mesajı okundu.

Outer, tarihi bir tabloya ve değerleri yok Nulls tüm değerleri seçmenizi sağlar sözdizimi için Outer Joins Section check out sonra sen gibi geliyor.