2013-09-23 31 views
0

我的應用程序利用關係表的表格,我用我的SQL連接視頻與類別,演員和標籤GROUP_CONCAT與DISTINCT。獨特不消除空結果

我面臨的問題是我會爲演員輸出拇指,但有時候演員還沒有縮略圖。在這種情況下,我在group_concat的行中產生的值與actor字段不一致,因爲3個actor是唯一的,但是如果我有2個actor沒有圖像(null),那麼我失去了錨點。

例如

SELECT 
    videos.id AS id, 
    videos.video_title AS video_title, 
    videos.video_views AS video_views, 
    videos.video_likes AS video_likes, 
    videos.video_dislikes AS video_dislikes, 
    videos.video_duration AS video_duration, 
    GROUP_CONCAT(DISTINCT a.actor_name SEPARATOR ';') AS actor_names, 
    GROUP_CONCAT(DISTINCT t.tag_name SEPARATOR ';') AS tag_names, 
    GROUP_CONCAT(DISTINCT c.category_name SEPARATOR ';') AS category_names, 
    GROUP_CONCAT(DISTINCT a.actor_thumb SEPARATOR ';') AS actor_thumbs 

FROM videos 

LEFT OUTER JOIN video_actors AS va ON va.video_id = videos.id 
LEFT OUTER JOIN actor AS a ON a.actor_id = va.actor_id 

LEFT OUTER JOIN video_tags AS vt ON vt.video_id = videos.id 
LEFT OUTER JOIN tags AS t ON t.tag_id = vt.tag_id 

LEFT OUTER JOIN video_categories AS vc ON vc.video_id = videos.id 
LEFT OUTER JOIN categories AS c ON c.category_id = vc.category_id 

WHERE videos.id = '23' 

演員拇指場結果:

more fields.. |0;http://site.com/actor/59.jpg 

但它應該是(3演員,2沒有縮略圖):

more fields.. |0;0;http://site.com/actor/59.jpg 

爲了保持對演員的名字值一致。

希望這有點清楚。

提前致謝! 尼克

回答

1

很可能是最好與該演員的名字和拇指一次......

GROUP_CONCAT(DISTINCT CONCAT(a.actor_name,'^',a.actor_thumb) SEPARATOR ';') AS actor_names 
+0

編輯答案,actully我的第一個建議直接難道不具有鮮明的工作。 – barryhunter

+0

感謝您的解決方案 – directory