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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> можно ли создавать такие запросы? 
:(
    Опции темы
z-END
Дата 9.9.2005, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

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



недавно перешел на MS SQL и после Paradox'a мощь немного ошеломляет...
а собственно вопрос такой можно ли составлять запросы такого вида:

например надо получить из таблицы А все ряды, про которые в таблице B (в поле table_a_id) нет данных (т.е. чтобы запрос вида SELECT id from B WHERE table_a_id=A.id был nil) ?

или например выбрать все данные из таблицы в которых поле с датой и сегодняшней датой различается на N-ное количество дней?

судя по всему все мои вопросы сводятся к одному, как составлять более сложные запросы чем select * from sometable
есть ли краткий on-line справочник по синтаксису?


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Akina
Дата 9.9.2005, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Вот один из кучи возможных вариантов.
Код

Select * From A Where ID Not In (Select ID From B)


Вообще можно почти все (трудно придумать то, чего нельзя)

Цитата(z @ 9.9.2005, 21:24)
есть ли краткий on-line справочник по синтаксису?

MSDN -> Enterprise Development -> Windows Server System -> Microsoft SQL Server -> ... ->Transact-SQL Reference


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

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


Опытный
**


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

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



ИМХО, шибко пользительно для тренировки и изучения
Упражнения по T-SQL
PM MAIL ICQ   Вверх
Vit
Дата 16.9.2005, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

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



Цитата(Akina @ 9.9.2005, 11:49)
Вообще можно почти все (трудно придумать то, чего нельзя)



Могу составить боооольшой список.... Но с этим обычно сталкиваются гораздо позже....


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Akina
Дата 16.9.2005, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Vit @ 16.9.2005, 17:32)
Могу составить боооольшой список

Того что вообще нельзя или того что делается с большим геморроем? и при этом находится в рамках реляционной модели (без идиотских просьб "взять значение из предыдущей ячейки")?
Впрочем с помощью хранимых процедур и такую хрень можно забахать без особого труда...


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

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


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

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



Цитата(Akina @ 16.9.2005, 08:01)
Того что вообще нельзя или того что делается с большим геморроем? и при этом находится в рамках реляционной модели (без идиотских просьб "взять значение из предыдущей ячейки")?
Впрочем с помощью хранимых процедур и такую хрень можно забахать без особого труда...



С учётом того что можно положить курсор типа "Select * From MyTable" с тем чтобы построчно пройти таблицу при наличии возможности вызовов внешних DLL то действительно можно сделать всё, но многие вещи реализуются исключительно сложно, громоздко, работают медленно и отбирают много ресурсов.

Цитата
и при этом находится в рамках реляционной модели (без идиотских просьб "взять значение из предыдущей ячейки")?


Модель - лишь идеал, который помогает стройно реализовать некую идеальную ситуацию. Реалии таковы, что хорошая модель охватывает 95-99% ситуаций, а остальные 1-5% реализуются исключительно геморройно преодолевая недостатки модели какими-нибудь окольными путями. Года 2 назад мне пришлось решать эту "идиотскую просьбу" из предыдущей ячейки, на тот момент мне ситтуация не казалась не смешной и идиотской, а пришлось потратить неимоверные усилия чтоб её решить, причём таблицы были вполне нормализованы и достаточно логичны... и задача оказалась вполне логичной... Если есть интерес могу привести этот пример.


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Akina
Дата 16.9.2005, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Vit @ 16.9.2005, 20:48)
Если есть интерес могу привести этот пример

Надеюсь, это не будет слишком оффтопно?


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

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


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

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



Таблица полётов на самолёте людей. Примерный вид:

Одно путешествие выглядит как :

1Сегмент - из Чикаго до Майями отлёт 1.2.2005
3Сегмент - из Майами до Детройта отлёт 2.3.2005
7Сегмент - из Детройта до Чикаго отлёт 5.6.2005

Сегмент - это один какой-то "участок" путешествия, нумерация только вперёд, т.е. следующий по времени отрезок пути будет иметь больший номер, но не сквозная - пропуски возможны совершенно случайным образом. Иногда агенты вставляют фиктивный сегмент-разделитель:


1Сегмент - из Чикаго до Майями отлёт 1.2.2005
3Сегмент - из Майами до Детройта отлёт 2.3.2005
5Сегмент - фиктивный
7Сегмент - из Детройта до Чикаго отлёт 5.6.2005

В таблице это выглядит как

Путешествие1|1|Дельта|Чикаго|Майами|1.2.2005
Путешествие1|3|Дельта|Майами|Детрой|2.3.2005
Путешествие1|5|Фиктив|
Путешествие1|7|Дельта|Детройт|Чикаго|5.6.2005

Так как репорт запускается с группировкой по дате, а фиктивный сегмент хотя и не имет даты на репорте всё же должен показываться в правильном месте, фиктивному сегменту надо присвоить дату предыдущего сегмента того же путешествия. Так как задача стала после многих лет работы програм и на моменть появления проблемы в таблицах уже были десятки(если не сотни) миллионов записей, то надо было исправить уже имеющиеся данные. Т.е. для каждого фиктивного сегмента найти предыдущий (самый большой по номеру меньший фиктивного) сегмент и из него дату вставить в фиктивный в пределах одного путешествия.

PS. Задача довольно сильно упрощена, я попытался передать смысл и самый минимальный объём информации, на самом деле участвовало гораздо больше таблиц и параметров, но реально камнем преткновения стала такая ситуация.


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




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


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

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