Not in sql
Автор Зияудин Абукаров задал вопрос в разделе Другие языки и технологии
SQL запрос, not in() и получил лучший ответ
Ответ от Михаил Губарев[гуру]
$result = array_diff ($friends[0], $friends[12]);
....where id in (".implode(',', $result ).")...
андестенд?
Ответ от Александр Свиридов[гуру]
$friends[0] и $friends[12] - откуда у вас эти массивы?
Дело в том что все данные по определению должны храниться в базе данных. Это лишает вас проблемы выбора алгоритма. Скажем, найти клиентов из города Москва но только таких у которых более 2-х заказов за месяц. Вы ищете тех у которых 3 и более заказов, потом делаете
select * from Customer where ID in (1,2,45,342,32,43,24,234,3)
и на этом "in" система бесится.
Сервер ждёт что вы отфильтруете более эффективным способом и не будете ему передавать целый массив значений для сравнений.
$friends[0] и $friends[12] - откуда у вас эти массивы?
Дело в том что все данные по определению должны храниться в базе данных. Это лишает вас проблемы выбора алгоритма. Скажем, найти клиентов из города Москва но только таких у которых более 2-х заказов за месяц. Вы ищете тех у которых 3 и более заказов, потом делаете
select * from Customer where ID in (1,2,45,342,32,43,24,234,3)
и на этом "in" система бесится.
Сервер ждёт что вы отфильтруете более эффективным способом и не будете ему передавать целый массив значений для сравнений.
Ответ от CanMan[гуру]
Сервер может только беситься, но правильные запросы он выполнять обязан. У меня нет под рукой сервера mySQL, чтобы прогнать Ваш запрос и указать на ошибку, если она имеет место быть. Почему бы Вам не запустить его самому и не сообщить нам поточнее, на что именно жалуетесь: на медленность или на незапускаемость?
Можно, конечно, попытаться "мысленно" прокомпилировать Ваш запрос, но, боюсь, mySQL все равно сделает это и быстрее, и лучше.
Сервер может только беситься, но правильные запросы он выполнять обязан. У меня нет под рукой сервера mySQL, чтобы прогнать Ваш запрос и указать на ошибку, если она имеет место быть. Почему бы Вам не запустить его самому и не сообщить нам поточнее, на что именно жалуетесь: на медленность или на незапускаемость?
Можно, конечно, попытаться "мысленно" прокомпилировать Ваш запрос, но, боюсь, mySQL все равно сделает это и быстрее, и лучше.
Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: SQL запрос, not in()