2016-12-30 7 views
0

私は動画情報付きのテーブルを持っています。誰かが自分のサイトで動画を選択すると、同様のタグを持つ他のすべての動画を表示する小さなセクションがあります。今は、現在選択されている動画を除外します。 (エラーがないように)類似の動画をMySQLを使用して選択する

SELECT video_title, video_desc 
FROM videos WHERE tags LIKE 
$CurrentTags AND 
'$CurrentVideo' NOT IN 
(SELECT video_id FROM videos WHERE video_id = '$CurrentVideo') 

クエリが正常に動作しますが、それは時々、まだ私にすでに選択されたビデオを返します。ここに私のクエリがあります。私はそれは明らかだと思うが、とにかく明確にする。

$ CurrentTagsは、現在選択されているビデオのタグのセットです。

$ CurrentVideoは、ウェブサイトで現在選択されているビデオの一意のビデオIDです。

答えて

1

これは、副選択せずに、あなたのQUERと同じでなければなりません:

SELECT video_title, video_desc 
FROM videos 
WHERE (
    tags LIKE $CurrentTags 
OR 
    tags LIKE $otherTags 
OR 
    tags LIKE $otherTags 
) 
AND 
    video_id <> '$CurrentVideo'; 
+0

はまだ私にすでに選択されたビデオを返します。本当に意味をなさない。 – Vortic

+0

は、パラメータで実行されたクエリを表示します。エラーは、$ CurrentVideoが間違っている場合にのみ発生する可能性があります –

+0

私はちょうど私がCMDに直接クエリを書く場合、それは$ CurrentVideoを適切に除外します。それから、私は現場で$ currentVideoをエコーし​​ました.100%正確です。 CMDではテストするのに1つのタグしか使わなかったので、$ CurrentTagsではいくつかの問題があるはずです。 – Vortic

0

(SELECT video_id FROM videos WHERE video_id = '$CurrentVideo')。そのサブクエリは、入力と同じ出力を返します。あなたはすでにビデオIDを持っています。もう一度選択する必要はありません。不平等演算子を試しましたか?さらに、あなたはそれを自分と比較しているのですか?代わりにこれを試してみてください:

video_id <>'$CurrentVideo'

関連する問題