データベースの構造の 1 つで値を検索したいのですが、コードが正しく動作しません
// $dir_id = 2;
// dirs (in database) = 1,2,3
SELECT * FROM `items` WHERE (id='$id' && $dir_id IN(`dirs`)) ORDER BY `id` DESC
しかし、このコードは2を見つけることができず、1を見つけるだけですdirs
どうすればこれを解決できますか?
たとえば、一致させIN
たいIDのリストを貼り付けます
AND dirs IN (1,2,3,4,5)
あなたの例では:
SELECT * FROM `items`
WHERE id='$id'
AND dirs IN ('$dir_id')
ORDER BY `id` DESC
私は過去にこれを行いました:
SELECT * FROM `items` WHERE (id='$id' && $dir_id IN(Select 'column_name' from `dirs`)) ORDER BY `id` DESC
"1,2,3"
列に文字列を格納した場合dirs
。(を通じて、データベースの設計を正規化する必要があります。 )
その場合は使用できません。代わりにFIND_IN_SETIN
を使用する必要があります。
SELECT * FROM `items`
WHERE (id='$id' AND FIND_IN_SET('$dir_id', `dirs`))
ORDER BY `id` DESC