| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Составление SQL-запросов > Наведите на мысль с sql запросом |
| Автор: Killer_13 4.11.2011, 23:18 |
| Здравств, стараюсь понять что да как. Конкретики приводить не буду, может кто просто наведет на мысль, буду благодарен. Значит есть две таблички в одной 2 номера, нужно проверить если в другой табличке есть такие номера, то не выводить ничего, если нету то вывести этот номер. ТОлько пож у кого есть желание подсказать - без кода! Мне нужно самому проникнуться раз и навсегда. Пасиб. |
| Автор: sitsalavat 4.11.2011, 23:24 |
| делаешь выборку этого номера по первой таблице, в условии указываешь, что этого номера нет в другой таблице. получается, если есть - то условию не удовлетворяет и не выберет, в противоположном случае - ваша задача выполнена) |
| Автор: boevik 5.11.2011, 02:37 |
| чуть конкретнее, то outer join по номеру и условие: вторая_таблица.номер is null. В итоге получится выборка всех номеров из первой таблицы, которых нет во второй. |
| Автор: Killer_13 5.11.2011, 02:46 |
| Пасиб, покурю варианты, но наверное уже завтра... А что вы имеете введу под null если например там только 2 номера, 2 строки, то что третья строка null? Или я вас не правильно понял, или вы меня. |
| Автор: Zloxa 5.11.2011, 11:48 |
| boevik, аутер джойн канает как частный случай, когда объединение идет по ключам. Общий случай - семиантиджойн, реализуется через not exists. |
| Автор: Killer_13 5.11.2011, 14:55 | ||||
| УРя, получилось, пасибо вам, Вот с NOT EXISTS все работает
а с JOIN что-то не получилось... :(
|
| Автор: tzirechnoy 6.11.2011, 11:11 |
| С JOIN не работает потому, что нужэн outer join. FROM ....,..... LEFT OUTER JOIN strafen ON strafen.spielernr=teams.spielernr WHERE strafen.spielernr IS NULL |
| Автор: Killer_13 6.11.2011, 12:35 |
| Переделаю - пасиб, ошибку понял. |
| Автор: Akina 7.11.2011, 22:37 | ||||
СУБД-зависимо... скажем, MySQL совершенно спокойно относится к
|
| Автор: Zloxa 8.11.2011, 08:44 | ||
Да, был не прав, в отличии от семидожйна, в случае антиджойна, ключи - не решают.
1) Речь шла о not exists. А not in эквивалентен not exists'у лишь в частном случае, когда антиджойн происходит по non nullable полям. 2) Как уже верно заметил Akina, ограничение условия по одному полю в not in - частный случай платформенного ограничения. |