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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> самый сложный запрос в мире 
:(
    Опции темы
Samotnik
Дата 13.1.2011, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



привет.
помогите пожалуйста составить самый сложный запрос в мире.  smile 
Есть таблица 
Код

Message (
int id
char text
)

и таблица 
Код

Delivery (
int id
int id_message
boolean sent
)

Нужно составить запрос, который выберет все значения из таблицы message которые не попали в delivery + те, которые в delivery поле sent = false
 smile 
PM MAIL   Вверх
Zloxa
Дата 13.1.2011, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


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

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



Код

select * from message m where not exist (select * from Delivery d wehre d.id_message=m.id and d.sent/*=true*/)



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


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

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



Код

select * from message as m left outer join delivery d on m.id = d.id_message
where
   d.sent is null or d.sent = false

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

Добавлено через 35 секунд
Zloxa

а аутержоином не лучше?
PM   Вверх
Zloxa
Дата 13.1.2011, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


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

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



azesmcar, только при условии что id_message - ключ. Иначе еще distinct поверх.


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


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

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



Zloxa

А, ну по логике тут связь один к одному, должен быть ключ. smile 
PM   Вверх
Zloxa
Дата 13.1.2011, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


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

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



Цитата(azesmcar @  13.1.2011,  20:16 Найти цитируемый пост)
а аутержоином не лучше? 

semijoin тоже не плох smile



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


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

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



Цитата(Zloxa @  13.1.2011,  20:21 Найти цитируемый пост)
semijoin тоже не плох 

Что это за зверь? Гугль выдает что-то про алгебру smile 
PM   Вверх
Zloxa
Дата 13.1.2011, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


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

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



Цитата(azesmcar @  13.1.2011,  20:22 Найти цитируемый пост)
Гугль выдает

>>>

И таки я вляпался, тут семиантиджойн  smile 


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


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

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



Цитата(Zloxa @  13.1.2011,  20:27 Найти цитируемый пост)
>>>

ааа, ты про это smile 
не знал, что это так называется, спасибо за ликбез.
PM   Вверх
Zloxa
Дата 13.1.2011, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


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

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



Цитата(azesmcar @  13.1.2011,  20:30 Найти цитируемый пост)
не знал, что это так называется

Не... это так не на зывается.. это так работает. smile
Цитата

В отличие от других операторов соединений,не существует явного синтаксиса для указания исполнения полусоединения, но SQL Server, в целом ряде случаев, использует в плане исполнения именно полусоединения.

 smile 


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


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



Zloxa, azesmcar, спасибо, круто. 
Я же говорил, что это самый сложный запрос в мире, даже обсуждение целое в теме получилось

Zloxa, подскажи пожалуйста, у меня уже есть запрос вот такой:
Код

select ms from Delivery dy inner join dy.message as ms where dy.deleted=:deleted and dy.sent=:sent and ms.category.id in (:ids)

и вот в него нужно вставить еще и твое условие, не поможешь объединить ? что-то у меня не получилось  smile

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


 




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


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

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