0

stackoverflowで複数の回答を試しましたが、問題に対する適切な解決策が見つからないようです。私が今試している現在のクエリは次のとおりです。

SELECT (
SELECT * FROM mds_media
) AS m
(
SELECT video_id FROM mds_featured WHERE video_id = m.id
) AS f

ORDER BY f.video_id DESC, m.id DESC

JOINingもやってみました

SELECT mds_media.*, mds_featured.* FROM mds_media AS m
JOIN mds_featured 
ON mds_featured.video_id = m.id
ORDER BY mds_featured.video_id DESC, mds_media.id DESC

私がしたいのは、mds_featured列video_idが、見つかったメディアのIDである場合、全体の結果に添付することだけです。したがって、私のmysql_fetch_array()は、たとえば次のように出力します。

array(id、name、blah、blah、blah、video_id)//もちろん値を含む// IF mds_featuredには、そのvideo_id列にmds_mediaのidと同じ値の行があります

また

array(id、name、blah、blah、blah)//ifmds_featured.video_idにmds_media.idに存在する行がない場合

解決策を提供する際の提案/役立つヒントに感謝します。私は正しく読んでいないか、どこかで混乱していて、私が見た答えは私を助けていません。私がすでにこれを解決できて、提供された解決策を持っていなかったら申し訳ありません。

テーブルが分離している理由があるため、featured/video_idを含む列を持つようにデータベーステーブルを変更する予定はありません。


他の人のために将来参照するために作業コードを更新しました:

SELECT m.id, m.name, mds_featured.video_id 
FROM mds_media m 
LEFT JOIN mds_featured 
ON mds_featured.video_id = m.id 
ORDER BY mds_featured.video_id DESC, m.id DESC

Vatevに感謝します

4

1 に答える 1

0

JOIN を LEFT JOIN に変更します。これにより、mds_featured から一致するものと一致する mds_media からのすべての行が得られます。一致するものがない場合、mds_featured 列は null になります。

SELECT mds_media.*, mds_featured.* 
FROM mds_media AS m
LEFT JOIN mds_featured 
ON mds_featured.video_id = m.id
ORDER BY mds_featured.video_id DESC, mds_media.id DESC
于 2013-03-12T17:29:01.630 に答える