| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MySQL > Подскажите как поиском отсутствующих данных |
| Автор: maxipub 16.7.2014, 11:18 | ||
| Добрый день! Есть таблица A с id, нужно выбрать данные из таблицы B, для которых нет id=val (но которые есть в A). Как делаем:
Задача у нас чуть сложнее. Есть таблицы TABLE_1, TABLE_2.1 и TABLE_2.2, нужно выбрать данные из TABLE_3, для которых нет записи id=val, существующей в TABLE_1 ИЛИ в TABLE_2.1 - но для последней только для случае, когда id=val ЕСТЬ и в TABLE_2.2 т.е. условие вида ВЫБРАТЬ данные из таблицы TABLE_3 ПРИ УСЛОВИИ, что id=val есть в TABLE_1 ИЛИ в (TABLE_2.1 И TABLE_2.2), но нет в TABLE_3 Такое можно сделать одним запросом? Пока склоняюсь к мысли разбить его на два запроса (отдельно TABLE_1, отдельно TABLE_2.1 И TABLE_2.2), и далее результаты уже объединить посредствам php. Заранее спасибо за помощь! |
| Автор: maxipub 18.7.2014, 08:31 |
| Akina, спасибо, попробуем так. Ну так я и спрашиваю. |
| Автор: maxipub 18.7.2014, 08:51 |
| Блин, сорри, я ерунду написал. Все то же самое, только данные выбираются из TABLE_1 / TABLE_2.1, id которых нет в TABLE_3! Пока сделал все же раздельными запросами, т.к. это логично и быстро. Не совсем пойму такой выпад в сторону это. Часто разделяют большие запросы на 2-3-4 даже. Тем более решение с IN при неизвестном количестве данных - очень спорный вариант, ИМХО. |
| Автор: Akina 18.7.2014, 10:09 | ||
Не понял фразы. В 90% случаев так делают те, кто ни ухо ни рыло в запросах. Сделать фигню, а потом придумать, почему так лучше, да ещё гордиться этим... не иди таким путём. Да, бывают ситуации, когда так на самом деле правильно. Но они редки, и это почти наверняка не твой случай. Ну тогда сделай следующий логический шаг, и вообще откажись от сервера БД... |
| Автор: maxipub 18.7.2014, 12:04 | ||
Я писал:
А на самом деле надо так: Есть таблицы TABLE_1, TABLE_2.1 и TABLE_2.2, TABLE_3. Нужно выбрать данные из TABLE_1, TABLE_2.1 (сами данные могут пересекатся, выборка должна быть с группировкой по id, дубли не нужны), у выбираемых данных должен быть id, которого нет в TABLE_3. При этом, из TABLE_2.1 берем только те записи, для которых id есть и в TABLE_2.2. |
| Автор: Akina 21.7.2014, 14:00 |
Я лично ничего не понимаю в твоём описании... |
| Автор: maxipub 22.7.2014, 17:07 |
| Выбрать записи, id которых нет в TABLE_3, но есть в TABLE_1 и/или в ( TABLE_2.1 и TABLE_2.2 ). |
| Автор: Akina 22.7.2014, 19:49 | ||
Ааа... вот так, что ли?
|
| Автор: maxipub 24.7.2014, 10:44 |
| Akina, спасибо всен оказалось не так сложно, вы были правы. |