Это, как я получаю некоторые книги, перечисленные в моем приложении:Выберите элементы для базы данных, которые не имеют
$sessionid = '000000000015';
$stmt = $conn->prepare("
SELECT
BOOKS_NEW.ID AS BOOKID,
BOOKS_NEW.BOOK_NAME,
MAX(USERS_BOOKS.DATE_MODIFIED) AS MAXDATE,
CASE WHEN ? IN (SELECT USERID FROM USERS_LIKES WHERE BOOKID = BOOKS_NEW.ID) THEN 'Yes' ELSE 'No' END AS DID_I_LIKE_IT
FROM
USERS_BOOKS
INNER JOIN
BOOKS_NEW ON BOOKS_NEW.ID=USERS_BOOKS.BOOKID
GROUP BY
USERS_BOOKS.BOOKID
ORDER BY
MAXDATE DESC LIMIT $start, $finish");
$stmt -> execute(array($sessionid));
Result
[[{ "BookID": "000000067", «BOOK_NAME»: «Найдите четырехлистник», «MAXDATE»: «2015-05-04 15:18:25», «DID_I_LIKE_IT»: «Нет»}, {«BOOKID»: «000000999», «BOOK_NAME», : «Перейти в игру Хьюстон Рокетс», «MAXDATE»: «2015-05-04 15:18:16», «DID_I_LIKE_IT»: «Нет»}, {«BOOKID»: «000001000», «BOOK_NAME»: Перейти к игре в Хьюстон техасцы »,« MAXDATE »:« 2015-05-04 15:18:09 »,« DID_I_LIKE_IT »:« Нет »}}]
Однако я хочу перечислить только те КНИГИ, которые пользователь ($sessionid
) НЕ имеет.
Это, как я список текущих BOOKIDs на пользователя:
$stmt = $conn->prepare("SELECT USERS_BOOKS.BOOKID FROM USERS_BOOKS
WHERE USERS_BOOKS.USERID = ?");
$stmt -> execute(array($sessionid));
РЕЗУЛЬТАТ:
[[{ "BookID": "000000001"}, { "BookID": "000000003 «}, {» BookID «:» 000000999" }]]
в конечном итоге я хочу получить JSON, как в первой, но без BOOKID = 000000999
, поскольку он присутствует во втором ,
Я попытался с помощью
WHERE NOT EXISTS (SELECT ID FROM BOOKS_NEW WHERE BOOKS_NEW.ID = USERS_BOOKS.BOOKID)
, но он дал мне пустой результат.
Это тоже дает мне нуль. Btw это должно быть 'WHERE BOOKS_NEW.ID NOT IN' – erdomester
Я нашел проблему в подзапросе. Проверьте мое обновление – Machavity
Это выглядит хорошо. Мне нужно проверить это, потому что мой реальный запрос намного сложнее. Я вернусь, спасибо! – erdomester