あなたのLIKE
条項は間違っています。代わりに句を使用するIN()
つもりだと思います。
AND audienceuploadassociation.audiencename IN ('Parents', 'Teachers', 'Community')
部分的な文字列を と一致させようとしている場合は、次のように、それらをグループにまとめるLIKE
必要があります。OR
()
AND (
audienceuploadassociation.audiencename LIKE 'Parents%'
OR audienceuploadassociation.audiencename LIKE 'Teachers%'
OR audienceuploadassociation.audiencename LIKE 'Community%'
)
また、使用している暗黙的な結合構文 (カンマ区切りのテーブル) は、明示的なJOIN
.
SELECT
uploads.*,
audienceuploadassociation.*
FROM
/* Explicit JOIN with ON clause */
uploads
JOIN audienceuploadassociation ON uploads.upload_id = audienceuploadassociation.upload_id
WHERE
uploads.member_id = '1'
AND uploads.member_school_id='1'
AND subject = 'Maths'
AND topic = 'Integers'
AND year IN(7, 8, 9)
AND audienceuploadassociation.audiencename IN ('Parents', 'Teachers', 'Community')
最後に、必要な列を実行するのではなく、明示的に名前を付けることをお勧めしますSELECT *
。これにより、それらを決定論的な順序で取得し、後でこのクエリで必要のない他の列を追加しないように保護できます。
SELECT
uploads.upload_id,
uploads.other_column,
uploads.topic,
audienceuploadassociation.audiencename,
...
...