![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
mgf |
|
|||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 23.4.2009 Репутация: нет Всего: нет |
Добрый вечер! Очень нужна помощь в составлении sql запроса! Суть такова: в каждом доме проживает несколько человек.
Таблица 1: человек с датой рождения и датой смерти таблица 2: номер дома, id человека, проживающего в нем, прописка(с какого числа проживает), дата выписки ( в случае смерти), в одном доме могут быть прописаны как умершие, так и живые люди. Надо учесть, что некоторых умерших просто забыли выписать из дома. Нужно сделать выборку только тех домов, в которых не проживает ни одного живого человека, то есть дом остался без хозяина Это сообщение отредактировал(а) mgf - 14.10.2011, 00:15 |
|||
|
||||
AndreyIQ |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 5.2.2007 Репутация: 3 Всего: 8 |
Вы уверены что у Вас в таблице2 - поле ид человека, а не в таблице1 - поле ид дома. |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
AndreyIQ, дома к человеку относятся многие ко многим, наверняка таблица2 реализует эту связь
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
AndreyIQ |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 5.2.2007 Репутация: 3 Всего: 8 |
Для связи много ко многим, должна быть промежуточная таблица. Это сообщение отредактировал(а) AndreyIQ - 14.10.2011, 09:31 |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Я так понимаю это она и есть, т.к. дата прпописки и дата выписки - нуникак не атрибуты сущности Дом )) Это сообщение отредактировал(а) Zloxa - 14.10.2011, 09:36 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
mgf |
|
|||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 23.4.2009 Репутация: нет Всего: нет |
Могу привести полные таблицы.. там, конечно много лишнего. Но выглядит так:
таблица 1: id_человека, дата рождения, дата смерти, ИНН, адрес и т.д. таблица 2(факт проживания): id_объекта (дома), дата прописки, id_человека, дата выписки, примечание таблица 3(объект-дом): id_объекта, номер дома, общая площадь и т.д. Поясните пожалуйста, что выполняет последняя строка в запросе? Делаю проверку в access, пишет, что пропущен оператор. Условие, проверяемое на пустые строки понятно, а для чего нужен count? И что в данном случае выполняет case Это сообщение отредактировал(а) mgf - 14.10.2011, 15:33 |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Выражение в case вернет еденичку, в случае, если в доме прописан жилец. count эти еденички посчитает для каждого дома. Нам нужны те дома, где нет проживающих жильцов. как это переписать под акцесс, я не знаю.
С учетом появления третьей таблицы, наверное следовало бы выбираться из нее, а Таблицу2 соединять левым соединением. Иначе у нас из выборки выпадут те дома, где никто никогда прописан не был. Это сообщение отредактировал(а) Zloxa - 14.10.2011, 16:04 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
AndreyIQ |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 5.2.2007 Репутация: 3 Всего: 8 |
Если ни где ни тупанул (пятница, вечер), то как то так:
|
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Нет, не так )) Благодаря условию Человеки.id_человека is null ты получишь только те дома, где никогда не были прописаны человеки, остальные условия можно и не проверять. Добавлено @ 16:11 Можно сделать через нотэкзистс
Это сообщение отредактировал(а) Zloxa - 14.10.2011, 16:34 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
AndreyIQ |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 5.2.2007 Репутация: 3 Всего: 8 |
Прочитал свой запрос, действительно хрень какую-то написал.
Можно. Темболее наверняка лучше моего запроса сработает ![]() ЗЫ ИМНО ексисты лучше не использовать, тормознутые они. |
||||
|
|||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Мне кажется тут ты обобщаешь очень частный случай )) Если акцесс не умеет строить приемлемого плана для экзистов, то лучше ограничить скоп высказывания именно акцессом. Это сообщение отредактировал(а) Zloxa - 14.10.2011, 16:24 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
AndreyIQ |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 5.2.2007 Репутация: 3 Всего: 8 |
Я в акцесе почти не работаю, в основно на firbird'e |
|||
|
||||
mgf |
|
|||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 23.4.2009 Репутация: нет Всего: нет |
спасибо! Очень помогли, таблицы имеют неудобную структуру, поэтому сама запуталась как это все в итоге вывести.
|
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |