-3

複数のテーブルからデータを取得しています。そしてこれを解決しようとしました

最後に、2つのクエリを取得しました

1) ユーザーメッセージの関連データを取得しています。

2) すべてのコメントとその詳細を取得します。

これら 2 つのクエリを 1 つのクエリに結合したいと考えています。

クエリ 1)

SELECT user_messages.messageid,user_messages.message,
user_messages.sentby,user_messages.visibility,

GROUP_CONCAT( post_images.image_id SEPARATOR ';')
AS  `POST_IMG_ID`,


GROUP_CONCAT( post_images.small_pic_path SEPARATOR ';')
AS 'POST_IMG_PATH',

(
  SELECT count(*) FROM likes
  WHERE element_id=user_messages.messageid
  )AS 'TOTAL_LIKES',

smsusers.fname as 'SENTBY_FNAME',
smsusers.lname as 'SENTBY_LNAME',
profile_pic.small_pic_path as 'SENTBY_SMALL_PIC_PATH'

FROM user_messages
      INNER JOIN smsusers ON
        user_messages.SENTBY = smsusers.id
 INNER JOIN profile_pic ON
 user_messages.SENTBY = profile_pic.userid
left outer JOIN post_images ON
user_messages.messageid=post_images.messageid
WHERE user_messages.userid='1'
GROUP BY user_messages.messageid
order by user_messages.adddate

その作業リンクはSql Fiddleです

クエリ 2)

SELECT comments.comment_id, comments.comment, comments.comment_date,
smsusers.fname ,smsusers.lname,profile_pic.small_pic_path  
FROM comments, smsusers , profile_pic , user_messages 
WHERE user_messages.messageid = 'm1'
AND user_messages.userid = smsusers.id
AND smsusers.id = profile_pic.userid
ORDER BY comment_date
LIMIT 0, 10;

作業リンクはSql Fiddleです

4

1 に答える 1

0

このクエリを使用し、依存サブクエリを削除します

SELECT user_messages.messageid,
       user_messages.message,
       user_messages.sentby,
       user_messages.visibility,
       GROUP_CONCAT(post_images.image_id SEPARATOR ';') AS `POST_IMG_ID`,
       GROUP_CONCAT(post_images.small_pic_path SEPARATOR ';') AS 'POST_IMG_PATH',
       likes.TCount AS 'TOTAL_LIKES',
       smsusers.fname AS 'SENTBY_FNAME',
       smsusers.lname AS 'SENTBY_LNAME',
       profile_pic.small_pic_path AS 'SENTBY_SMALL_PIC_PATH',
       GROUP_CONCAT(comments.comment) AS `Comments`
FROM user_messages
INNER JOIN smsusers ON user_messages.SENTBY = smsusers.id
INNER JOIN profile_pic ON user_messages.SENTBY = profile_pic.userid
LEFT OUTER JOIN post_images ON user_messages.messageid = post_images.messageid
LEFT JOIN
    (SELECT element_id,
            COUNT(*) AS `TCount`
     FROM likes
     GROUP BY element_id) AS likes ON likes.element_id = user_messages.messageid
LEFT JOIN comments ON comments.comment_on = user_messages.messageid
WHERE user_messages.userid = '1'
GROUP BY user_messages.messageid
ORDER BY user_messages.adddate;

フィドルのデモ

于 2013-03-05T12:43:44.720 に答える