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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод всех данных, за исключением совпадений... с данными в др. таблице 
V
    Опции темы
sawtooth
Дата 3.8.2009, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Возникла следующая заминка:

Даны таблицы:
tab1 с полями id, param1, param2
tab2 с полями id, param1, param2
tab3 с полями id, param1

Необходимо отобрать строки из tab1, где 
tab1.param1=tab2.param1 и tab1.param2>tab2.param2
а также выводились все остальные строки из всё той же tab1, за исключением следующих совпадений 
tab1.param1=tab3.param1

Подскажите, пожалуйста.

Это сообщение отредактировал(а) sawtooth - 3.8.2009, 10:13
PM MAIL   Вверх
Akina
Дата 3.8.2009, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Как связаны таблицы?


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

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


Новичок



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

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



Вопрос исчерпан. Пришел к следующему решению.

Код

SELECT tab1.param1, tab1.param2
FROM tab1
LEFT JOIN tab2 on tab2.param1=tab1.param1
LEFT JOIN tab3 on tab3.param1=tab1.param1
WHERE (tab2.param1= tab1.param1 AND tab2.param2< tab1.param2) OR
      (tab2.param1<>tab1.param1 AND tab3.param1<>tab1.param1)


Безусловно, далеко не идеальное решение, но маст би воркинг.
Отношения:
tab2 -> tab1 - один ко многим
tab3 -> tab1 - один ко многим

Это сообщение отредактировал(а) sawtooth - 3.8.2009, 10:27
PM MAIL   Вверх
Akina
Дата 3.8.2009, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Поскольку соединение по полю param1 и левое, в условиях отбора можно заменить 
Код

tabX.param1 <> tab1.param1 
на 
Код

tabX.param1 IS NULL
а равенство соответственно на IS NOT NULL.


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

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


Новичок



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

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



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


 




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


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

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