次のことを試してみてください。現在のユーザーのレコードを選択し、評価がnull/空の画像を表示します...おそらく。より効果的な答えを得るために、テーブルスキーマを表示しておいた方がよいでしょう。
SELECT ver_data_media.id, ver_data_media.value,
ver_data_media.ref, ver_data_media.type, ver_data_rating.a
FROM ver_data_media
LEFT JOIN ver_data_rating
ON ver_data_media.ref = ver_data_rating.a
WHERE ver_data_media.type = 'image'
AND ver_data_rating.a is null
AND id = $current_user -- shouldn't this be like userid = $current_user,
-- where is this ID coming from? what is its relation to this table?
それ以外の場合、最も可能性のある問題は、この行で検証しているデータが同じタイプではないことです。最善の提案は、 1つのデータ型をとの両方にキャストver_data_rating.a != $current_user->ID
することだと思います。ver_Data_rating.a
$current_user
たとえば、次のいずれかを使用してテストできます。
更新:推奨テーブルスキーマとサンプルクエリを使用
クエリの接続方法、関係には実際に問題があるようです。このサンプルをご覧になり、結果をお知らせください。特定のユーザー/ユーザーのメディアテーブルから未評価 をオンラインで取得する2つの方法をリストしました。media records
変数は、ユーザーIDを格納するために使用されます。
SQLFIDDLEデモンストレーション
サンプルデータ:
-- media table
ID VALUE REF TYPE
1 300 15 image
2 100 25 art
3 500 35 cartoon
4 200 35 image
5 100 25 image
6 200 15 image
7 400 15 image
8 250 15 image
9 500 15 image
10 180 15 art
-- rating table
RID MID UID SOMETHING
100 1 15 xyz
101 2 25 abc
102 5 25 efg
103 3 35 abc
ステップバイステップのクエリ:
set @user_id:=15;
-- find all media records for @user, type image
select * from media
where ref = @user_id
and type = 'image'
;
-- find all rated reords for @user
select mid from rating
where uid = @user_id
;
-- media records that needs to be rated by @user
-- using IN clause
select * from media
where id not in
(select mid from rating
where uid = @user_id)
and type = 'image'
and ref = @user_id
;
-- media records that needs to be rated by @user
-- using INNER JOIN
select m.*
from media m
inner join (
select mid from rating
where uid = @user_id) as x
on m.id <> x.mid
and m.type = 'image'
and m.ref = @user_id
;
上記の各ステップバイステップクエリの結果:
ID VALUE REF TYPE
1 300 15 image
6 200 15 image
7 400 15 image
8 250 15 image
9 500 15 image
ユーザー=15、タイプ=画像の下の評価テーブルからの評価されたレコードID
MID
1
IN句の使用:ユーザー= 15、タイプ=image`の未評価のメディアレコード
ID VALUE REF TYPE
6 200 15 image
7 400 15 image
8 250 15 image
9 500 15 image
INNER JOINの使用:ユーザー= 15、タイプ=画像の未評価のメディアレコード
ID VALUE REF TYPE
6 200 15 image
7 400 15 image
8 250 15 image
9 500 15 image