2016-11-20 9 views
1

以下のステートメントでは、コメントの概要を見ることができます。その行のコメントを外すと、このステートメントは結果を返しません。私がラインをコメントしたままにしておけば、画像に結果が表示されますが、それは正しいです。Third MySQLがクエリを中断するステートメント

select 
`movies`.`id` as 'movie_id', 
`movies`.`title` as 'movie_title', 
`cnt_lists`.`id` as 'cnt_list_id', 
`cnt_lists`.`list_id`, 
`cnt_lists`.`listable_id`, 
`cnt_lists`.`listable_type` 
from `movies` 
inner join `cnt_lists` 
on `movies`.`id` = `cnt_lists`.`listable_id` 
where `movies`.`has_poster` = '1' 
and `cnt_lists`.`list_id` in ('3285') 
# and `cnt_lists`.`listable_type` = 'App\Models\Movie' 
order by `order` desc 
limit 1; 

results with line commented out

誰もが三どこ文がいない結果につながる理由についていくつかの光を当てることができますか?これはラベール関係からデバッグしているクエリです。

答えて

2

エンコードの問題のようです。 NO_BACKSLASH_ESCAPESがオンになっているかどうかをチェックし、OFFであれば(これはおそらくそうです)、 "\"からエスケープする必要があります。 http://dev.mysql.com/doc/refman/5.7/en/string-literals.html

アップデート:ただ、「アプリケーション\モデル\映画」周りの空白があるかどうかも確認してください、という言及を忘れてしまったこれは、あなたが and `cnt_lists`.`listable_type` = 'App\\Models\\Movie'`

参考として、条件を記述する必要があるということです。わからない場合は、不確実性を避けるためにlikeを使用することができます。 `cnt_lists`.`listable_type` like '%App\Models\Movie%' または脱出た場合は、必要とされている: `cnt_lists`.`listable_type` like '%App\\Models\\Movie%'

+0

エスケープが問題でした。ありがとう。今私は、ララベルの多形性の関係から脱出する方法を理解する必要があります。 – ATLChris

0

MySQLのリターンはそれ以外何もマッチしていない任意の行があるときにセットつながります。

`movies`.`has_poster` = '1' and 
    `cnt_lists`.`list_id` in ('3285') 
    and `cnt_lists`.`listable_type` = 'App\Models\Movie' 

上記のステートメントがレコードを返さない場合は、文字列の照合順序が同じかどうかを確認してください。

関連する問題