1

以下は私の質問です。これは適切に機能しています。問題は、同様のテーブルから、特定のユーザーが要素を気に入っているかどうかを確認できないことです。人が好きなら「はい」を表示し、そうでない場合は「いいえ」を表示します。

SELECT
      u_m.*,concat(usr.fname,' ',usr.lname) as NAME,
      u_m_u.sent_to,u_m_u.sent_by,u_m_u.shared_of,
      u_m_u.author,u_m_u.adddate

FROM user_message_users AS u_m_u
      LEFT JOIN user_messages AS u_m
        ON u_m.messageid = u_m_u.messageid
       LEFT JOIN smsusers AS usr
        ON u_m_u.sent_by=usr.id
       LEFT JOIN likes 
        ON u_m.messageid=likes.element_id 
        and
        likes.liked_by='1'
        group by u_m_u.messageid,u_m_u.sent_to
       ORDER BY u_m_u.adddate desc;

みたいなテーブルは

create table likes(
element_id varchar(100),
element_type varchar(100),
liked_by varchar(100), 
foreign key(liked_by) references smsusers(id)
 ON DELETE CASCADE ON UPDATE CASCADE,
adddate timestamp DEFAULT CURRENT_TIMESTAMP,
primary key(element_id,liked_by));

私のクエリリンク

4

2 に答える 2

0

このクエリを試してください:-

SELECT
      u_m.*,concat(usr.fname,' ',usr.lname) as NAME,
      u_m_u.sent_to,u_m_u.sent_by,u_m_u.shared_of,
      u_m_u.author,u_m_u.adddate,if(likes.liked_by is null,'No','Yes')
as likees

FROM user_message_users AS u_m_u
      LEFT JOIN user_messages AS u_m
        ON u_m.messageid = u_m_u.messageid
       LEFT JOIN smsusers AS usr
        ON u_m_u.sent_by=usr.id
       LEFT JOIN likes 
        ON u_m.messageid=likes.element_id 
and
likes.liked_by='1'
group by u_m_u.messageid,u_m_u.sent_to
ORDER BY u_m_u.adddate desc;

SQLFiddle を試す

于 2013-05-16T07:21:53.840 に答える