2015-11-24 3 views
1

У меня есть запрос sql, который выбирает минимальное значение из столбца и требует, чтобы другое значение было равно 1. Я использую вложенный выбор и пытаюсь использовать оператор AND. Однако, после добавления И, результаты запроса с нулевыми результатами.И не работает с вложенным запросом sql sql

$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 
------------- --------------- -------- 
[email protected]   0   1 
[email protected]   1   3 
[email protected]   1   2 

Запрос должен привести к email3 @ почте, потому что запись имеет наименьший в ожидании и имеет активный равным 1.

+0

Я бы ожидать, что это сработает, хотя это не самый эффективный способ. Можете ли вы опубликовать образец строк таблицы вместе с образцом того, что вы ожидаете от результата запроса для тех же строк? –

+0

Да, я могу добавить это к моему вопросу. –

ответ

0

Попробуйте это.

$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 значение

+0

Это работает !! Так была разница, потому что я должен был выбрать минимум, если бы активный писатель был равен одному? –

+0

Да, это было абсолютно правильно, есть более подробное объяснение этому, но я делаю это намного проще для нас, чтобы понимать друг друга –

0

Это должно дать вам то, что вам нужно,

$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"; 

Ваш внутренний запрос select дает результат 1 в ожидании, и поскольку нет записи, где writer_active=1 и pending=1, вы получаете нулевые строки.

Смежные вопросы