И не работает с Nested Select SQL запрос
У меня есть SQL-запрос, который выбирает минимальное значение из столбца и требует, чтобы другое значение было равно 1. Я использую вложенный выбор и пытаюсь использовать оператор AND. Однако после добавления AND запрос завершается с нулевым результатом.
$sql="SELECT writer_email FROM writerdata_tb WHERE writer_active = 1 AND pending = (SELECT MIN(pending) FROM writerdata_tb) LIMIT 1";
Как мне исправить этот код, чтобы выбрать ГДЕ, который удовлетворяет обоим?
writer_email | writer_active | pending
------------- --------------- --------
email1@mail 0 1
email2@mail 1 3
email3@mail 1 2
Запрос должен привести к email3@mail, потому что запись имеет наименьшее количество ожидающих и имеет активный, равный 1.
2 ответа
Попробуй это.
$sql="SELECT writer_email FROM writerdata_tb WHERE writer_active = 1 AND pending = (SELECT MIN(pending) FROM writerdata_tb WHERE writer_active = 1) LIMIT 1";
Это из-за вашей второй команды выбора он будет выбирать только минимальное значение независимо от значения writer_active
Это должно дать вам то, что вам нужно,
$sql="SELECT writer_email FROM writerdata_tb WHERE writer_active=1 AND pending = (SELECT MIN(pending) FROM writerdata_tb WHERE writer_active=1) LIMIT 1";
Ваш внутренний запрос выбора дает результат 1
для ожидания и так как нет записи, где writer_active=1
а также pending=1
, вы получите ноль строк.