![](/img/trans.png)
[英]How to remove redundant data in table from SQL query with join in codeigniter
[英]how to remove redundant field from left join
我有以下查詢從兩個不同的表中獲取消息和圖像。 這里有一條消息可以有多個圖像
因為我寫了以下查詢,它正常工作並顯示以下結果
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)消息已發送
這條消息的所有small_pic_path消息都是id
1)消息已發送
這條消息的所有small_pic_path消息都是id
2)消息發送
這條消息的所有small_pic_path消息都是id
3)消息發送
這條消息的所有small_pic_path消息都是id
這是使用JOIN
時的預期行為,您將獲得跨產品。
如果要折疊行,請使用GROUP BY
和相應的列。 在你的情況下,它可能是:
GROUP BY messageid, message, sentry, adddate
如果沒有真正了解您的要求,請寫下:
但我想用一個消息細節顯示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處理它。
祝你好運。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.