0

user( use_id
, use_role),
message(mes_id, from_use_id[fk->user.use_id], mes_create_at),
message_user(mes_use_id, mes_id[fk->message.mes_id], to_use_id[fk->user. use_id])

ユーザーは、use_role=1 (生徒) または use_role=2 (教師) にすることができます。
use_type=1(student) であるすべてのユーザーを、教師との最後の連絡先でソートする必要があります。生徒が先生に手紙を書いても、先生が生徒に手紙を書いても構いません。

4

1 に答える 1

0

ms sqlを使用していると仮定します:

select *
from
(
    select student.use_id, Message.mes_create_at, Message.from_use_id, Message_User.to_use_id
    from User student
    join Message on Message.use_id = student.use_id and student.use_role = 1
    join Message_User on Message_User.mes_id = Message.mes_id
    where Message_User.to_use_id in (select use_id from User where use_role = 2)

    union

    select Message_User.to_use_id, Message.mes_create_at, Message.from_use_id, Message_User.to_use_id
    from User teacher
    join Message on Message.use_id = teacher.use_id and teacher.use_role = 2
    join Message_User on Message_User.mes_id = Message.mes_id
    where Message_User.to_use_id in (select use_id from User where use_role = 1)
) as temp
order by mes_create_at desc
于 2013-09-13T19:19:20.070 に答える