0

まず、似たような質問回答を見つけましたが、どういうわけか私の状況ではうまくいかないようです。

それに応じたビデオを表示したいプロジェクトがあります。ビデオリンクはfe_media、タイプが。でテーブルに保存されますVideo。現在のプロジェクトにもいくつかの画像があり、それらは同じテーブルに保存されていますが、タイプはImageです。これらのレコードはすべて、正規化テーブルを介してリンクされています。

私が読んだものについては、私のクエリは次のようになります。


SELECT project.id, project.title, media.type, media.link
FROM projects AS project
     LEFT JOIN norm_project_media AS norm ON norm.n_project_id = project.id
     LEFT JOIN media AS media ON media.id = norm.n_media_id 
                                 AND media.type = 'Video'
WHERE project.id = '".$item."'

私はすべてのプロジェクト結果を取得しますがNULL、メディアリンクにあります。値が正しいことはわかっているので、ビデオリンクを表示する必要があります。これは、句の後に$item行を追加すると、ビデオリンクが表示されるためです。このソリューションの問題は、特定のプロジェクトのテーブルにビデオがない場合、何も(プロジェクトデータさえも)表示されないことです。AND media.type = 'Video'WHEREfe_media

:(

編集: タイプミスを修正しましたが、それでも同じ問題です

4

1 に答える 1

0

はい、わかった

レコードの順序を変更したmedia.linkので、ビデオ リンクが一番上 (すべてのNULL値の上) になり、次のように 1 レコードの制限を設定しました。


SELECT project.id, project.title, media.type, media.link
FROM projects AS project
     LEFT JOIN norm_project_media AS norm ON norm.n_project_id = project.id
     LEFT JOIN media AS media ON media.id = norm.n_media_id AND media.type = 'Video'
WHERE project.id = '".$item."'
ORDER BY media.link DESC
LIMIT 1

おそらく最もきれいな解決策ではないかもしれませんが、少なくとも機能します

于 2013-01-10T12:32:25.457 に答える