0

私のアプリケーションは、関係テーブルを含むテーブルを使用します。ビデオをカテゴリ、俳優、およびタグ GROUP_CONCAT と SQL で DISTINCT に接続するために使用します。

私が直面している問題は、俳優の親指も出力することですが、俳優のサムネイルがまだ存在しない場合があります。この場合、group_concat を含む行で生成する値は、3 つのアクターが一意であるため、アクター フィールドと一致していませんが、画像 (null) のない 2 つのアクターがある場合、それらへのアンカーを失いました。

例えば

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

アクター名に対する値を一致させます。

これが少し明確であることを願っています。

前もって感謝します!ニック

4

1 に答える 1

1

俳優の名前と親指を一度に取得するのがおそらく最善でしょう...

GROUP_CONCAT(DISTINCT CONCAT(a.actor_name,'^',a.actor_thumb) SEPARATOR ';') AS actor_names
于 2013-09-23T13:47:47.543 に答える