0

2つの異なるテーブルからメッセージと画像をフェッチするために次のクエリがあります。ここでは、1つのメッセージに複数の画像を含めることができます

そのために私は正しく機能し、次の結果を示す次のクエリを書きました

select msg.messageid, msg.message, msg.sentby, msg.adddate, 
p_i.image_id ,p_i.small_pic_path 
from user_messages as msg
LEFT JOIN post_images as p_i
on msg.messageid=p_i.messageid
where msg.messageid='zpx1btrpvpa1360154523078'
order by msg.adddate desc

出力は

 messageid  message  sentby  adddate  image_id  small_pic_path
   1         abc      aa      12/2/12   6          /sdf/sdf
   1         abc      aa      12/2/12   7          /asdf/df
   1         abc      aa      12/2/12   8          /cxd/sxc
   1         abc      aa      12/2/12   9          /zz/szz

ここでは、 adddateによって送信されたmessageidメッセージ が繰り返されており、jspページに表示されている間、合計4つの異なるメッセージが表示されます。

しかし、私は4つのimageidとsmall_pic_path(メッセージIDに基づく)を関連するメッセージの詳細とともに表示したいと思います

として表示したい

1)
このメッセージのメッセージIDのすべてのsmall_pic_pathによって送信されたメッセージ

1)
このメッセージのメッセージIDのすべてのsmall_pic_pathによって送信されたメッセージ

2)
このメッセージのメッセージIDのすべてのsmall_pic_pathによって送信されたメッセージ

3)
このメッセージのメッセージIDのすべてのsmall_pic_pathによって送信されたメッセージ

4

2 に答える 2

1

これは、を使用するときに予想される動作JOINです。外積が得られます。

行を折りたたむ場合GROUP BYは、適切な列で使用します。あなたの場合、それは次のようになります。

GROUP BY messageid, message, sentry, adddate
于 2013-02-07T01:47:03.190 に答える
1

要件を実際に理解せずに、次のように記述します。

しかし、1つのメッセージの詳細で4つのimageidとsmall_pic_pathを表示したい

それらのレコードをどのように表示しますか?

同じ行を意味していると仮定して、次の使用を検討しますGROUP_CONCAT

SELECT msg.messageid, msg.message, msg.sentby, msg.adddate, 
  group_concat(p_i.image_id separator ';') imageids,
  group_concat(p_i.small_pic_path separator ';') picpaths
FROM ...

結果を示すSQLフィドルを次に示します。

結果を別の方法で表示したい場合は、UIを介して処理する必要があります。

幸運を祈ります。

于 2013-02-07T02:02:06.720 に答える