Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Наведите на мысль с sql запросом 
:(
    Опции темы
Killer_13
  Дата 4.11.2011, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: нет
Всего: 1



Здравств, стараюсь понять что да как.

Конкретики приводить не буду, может кто просто наведет на мысль, буду благодарен.

Значит есть две таблички в одной 2 номера, нужно проверить если в другой табличке есть такие номера, то не выводить ничего, если нету то вывести этот номер.

ТОлько пож у кого есть желание подсказать - без кода! 

Мне нужно самому проникнуться раз и навсегда.

Пасиб.
PM MAIL   Вверх
sitsalavat
Дата 4.11.2011, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 2.10.2011
Где: Kazan

Репутация: нет
Всего: нет



делаешь выборку этого номера по первой таблице, в условии указываешь, что этого номера нет в другой таблице.
получается, если есть - то условию не удовлетворяет и не выберет, в противоположном случае - ваша задача выполнена)
PM MAIL WWW   Вверх
boevik
Дата 5.11.2011, 02:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: нет
Всего: 35



чуть конкретнее, то outer join по номеру и условие: вторая_таблица.номер is null.
В итоге получится выборка всех номеров из первой таблицы, которых нет во второй.


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
Killer_13
Дата 5.11.2011, 02:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: нет
Всего: 1



Пасиб, покурю варианты, но наверное уже завтра...
А что вы имеете введу под null если например там только 2 номера, 2 строки, то что третья строка null? Или я вас не правильно понял, или вы меня. 
PM MAIL   Вверх
Zloxa
Дата 5.11.2011, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



boevik, аутер джойн канает как частный случай, когда объединение идет по ключам. Общий случай - семиантиджойн, реализуется через not exists.


Это сообщение отредактировал(а) Zloxa - 5.11.2011, 11:52


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Killer_13
Дата 5.11.2011, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: нет
Всего: 1



УРя, получилось, пасибо вам,

Вот с NOT EXISTS все работает
Код

SELECT teams.spielernr AS Kapitan_Nr,spieler.name AS Kapitan_Name
FROM teams,spieler
WHERE teams.spielernr=spieler.spielernr AND 
NOT EXISTS
(
SELECT strafen.spielernr
FROM strafen
WHERE strafen.spielernr=teams.spielernr
)


а с JOIN что-то не получилось... :(
Код

SELECT strafen.spielernr AS Kapitan_Nr, spieler.name AS Kapitan_name
FROM spieler,teams JOIN strafen ON strafen.spielernr IS NULL
ORDER BY strafen.spielernr

PM MAIL   Вверх
tzirechnoy
Дата 6.11.2011, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: 2
Всего: 16



С JOIN не работает потому, что нужэн outer join. FROM ....,..... LEFT OUTER JOIN strafen ON strafen.spielernr=teams.spielernr
WHERE strafen.spielernr IS NULL
PM MAIL   Вверх
Killer_13
Дата 6.11.2011, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: нет
Всего: 1



Переделаю - пасиб, ошибку понял.
PM MAIL   Вверх
boevik
Дата 7.11.2011, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: нет
Всего: 35



Цитата(Zloxa @  5.11.2011,  11:48 Найти цитируемый пост)
boevik, аутер джойн канает как частный случай, когда объединение идет по ключам

Что значит только по ключам? Можно делать объединение по любым полям (сейчас мы не обсуждаем эффективность выборки).
Выборка с применением IN (по другому говоря exists) это частный случай так как ограничивает условие только по одном полю.
 


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
Akina
Дата 7.11.2011, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(boevik @  7.11.2011,  22:56 Найти цитируемый пост)
Выборка с применением IN (по другому говоря exists) это частный случай так как ограничивает условие только по одном полю.

СУБД-зависимо... скажем, MySQL совершенно спокойно относится к 
Код

WHERE (f1, f2) IN (SELECT f3, f4 FROM t1)



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Zloxa
Дата 8.11.2011, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(boevik @  7.11.2011,  21:56 Найти цитируемый пост)
Что значит только по ключам?

Да, был не прав, в отличии от семидожйна, в случае антиджойна, ключи - не решают.  smile 

Цитата(boevik @  7.11.2011,  21:56 Найти цитируемый пост)
Выборка с применением IN (по другому говоря exists) это частный случай так как ограничивает условие только по одном полю. 

1) Речь шла о not exists. А not in эквивалентен not exists'у лишь в частном случае, когда антиджойн происходит по non nullable полям.
2) Как уже верно заметил Akina, ограничение условия по одному полю в not in - частный случай платформенного ограничения.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0801 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.