私は、選択したムービーのメタデータとデータベース内のメタデータを比較することで、類似のムービーを返すサイトを開発しています。sql IN句は、選択したものの代わりに現在の行を返すだけです
現時点では、の分類評価をと比較しています。あなたはRまたはMAの評価を持って映画を選択した場合たとえば、その後、結果は同様の分類で何かする必要があります返された(すなわち:M、MAまたは)。
これまでのところ、これは私のSQLとPHPがどのように見えるかです。
$rating = $data->rating;
if($rating === "MA" || $rating === "R"){
$rating = "M, MA, R";
}
$rating = "rating IN (" . $rating . ")";
$sql = "SELECT * FROM movies WHERE unique_id <> ? AND " . $rating . " LIMIT 10";
SQLがページに出力された場合、それはそれがないている、SELECT * ... AND rating IN (M, MA, R) ...
のようになります。しかし、代わりに返された結果がM、MAまたはR(選択したムービーを含まない)の格付けを持つすべてのそれらの映画のあることの、それだけで選択したムービーを返します。それはmovieE
から離れて、すべてのムービーを返すべきである、movieA
については
+----+--------+--------+-----------+
| id | title | rating | unique_id |
+----+--------+--------+-----------+
| 1 | movieA | R | idA |
| 2 | movieB | MA | idB |
| 3 | movieC | M | idC |
| 4 | movieD | MA | idD |
| 5 | movieE | PG | idE |
+----+--------+--------+-----------+
:
は、ここに私の現在のデータベーステーブルの例です。 movieC
の場合は、2, 4 and 5
が返されます。
私はIN
節を正しく使用したように感じます。なぜ、これが動作しないのか混乱しています。
すべての援助は高く評価されます、乾杯。
私は今テストします!ありがとう:) –
3分で答えを受け入れる:)リファレンスbtwのおかげで –