![]() |
|
Модераторы: LSD |
![]()
|
|
| maxnoskov |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 21.6.2006 Где: Мурманск Репутация: нет Всего: нет |
Ребята, выручайте. Работаю с SQLite 3.0.
Есть таблицы: Районы, Учреждения, Здания и Справочник типов зданий Связи такие: Районы - Учреждения (один ко многим); Учреждения - Здания (один ко многим); Справочник типов зданий - Здания (один ко многим). Нужно создать запрос в котором нужно для каждого типа здания нужно вывести количество зданий, имеющих определенные атрибуты, прописанные в таблице Здания(для определенного района и учреждения) Район - Первый; Учреждение - такое-тож Типы зданий Есть сигнализация Есть пожарный кран и.т. Общежитие 3 1 Мастерская 2 0 и т.д. В Access использовал SUM вместе с IIF(). А SQLite их не поддерживает Чувствую, нужны подзапросы, но как реализовать - не знаю |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 5 Всего: 260 |
в таком виде, как ты хочешь, тебе надо перед запросом знать количество атрибутов.
плиз, сообщи, есть ли в SQLLite cross join или можно ли делать inner join без указания условия связи. а то у меня yt открывается сайт SQLLite: ( |
|||
|
||||
| maxnoskov |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 21.6.2006 Где: Мурманск Репутация: нет Всего: нет |
Количество атрибутов мне известно, CROSS JOIN и INNER JOIN без условия работают, но выдают странный результат
|
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 5 Всего: 260 |
ок. тогда можно сделать так:
вроде, так Добавлено @ 12:51 да ну? может, это ты от них ожидаешь чего-то хитрого? Если есть таблица 1: table1 _______ id value _______ 1 a 2 b 3 c и таблица 2: table2 _______ id value _______ 9 01 10 02 11 03 то после выполнения cross join(или inner join без условия связывания, что одно и то же) ты должен получить декартово произведение: все строки из первой таблицы во всех возможных комбинациях со строками из второй таблицы: table1.id table1.value table2.id table2.value _______________________________________ 1 a 9 01 1 a 10 02 1 a 11 03 2 b 9 01 2 b 10 02 2 b 11 03 3 c 9 01 3 c 10 02 3 c 11 03 разве не такое у тебя получается? |
|||
|
||||
| maxnoskov |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 21.6.2006 Где: Мурманск Репутация: нет Всего: нет |
Спасибо, все работает, только как сюда районы и типы учреждений впихнуть, ну т.е чиобы такая таблица выдавалась для определенного района и для определенного типа ОУ
|
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 5 Всего: 260 |
чесно говоря, не ждал, что сходу получится...
Что такое "ОУ"? у меня же в запросе есть так я выбираю данные только касательно одного единственного учереждения. а судя по у тебя одно и то же учереждение не размещает свои здания в разных районах. значит, дополнительная фильтрация по району бессмысленна |
|||
|
||||
| maxnoskov |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 21.6.2006 Где: Мурманск Репутация: нет Всего: нет |
Это индекс ОУ, а мне не нужно по ОУ. Я неправильно вопрос поставил. Есть таблица типы_ОУ и она связана с таблицей ОУ один ко многим. И вот по эти типам мне нужно выводить данный запрос. Ну т.е. сколько зданий с такими-то атрибутами имеются у ОУ данного типа
И все это делать по районам. Т.е. для каждого района и в каждом районе свой тип ОУ и для каждого типа ОУ свой запрос. ВОТ так. Ну блин намутил |
||||
|
|||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 5 Всего: 260 |
запутал окончательно
|
|||
|
||||
| maxnoskov |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 21.6.2006 Где: Мурманск Репутация: нет Всего: нет |
Попробую распутать:
Есть таблица Районы и связанная с ней таблица Образовательные учреждения (один ко многим). Т.е. к одному району относятся несколько учреждений. Каждое учреждение имеет свой тип, прописанный в таблице Типы_ОУ. Типы ОУ - ОУ (один ко многим). Одно учреждение - один тип ОУ. Один тип ОУ - много учреждений. Есть таблица Зданий, связанная с таблицей ОУ. Т.е. к одному ОУ относятся много зданий. Каждое здание имеет свой тип, прописанный в таблице Типы Зданий. Типы зданий - Здания (один ко многим). Одно здание - один тип здания. Один тип здания - много зданий. В таблице здания для каждого здания имеется набор атрибутов, имеющих определенные значения. Что нужно: Для конкретного района и для конкретного типа ОУ, т.е. учитывая учреждения определенного типа, относящиеся к этому району, нужно найти количество: Такой-то район Такой-то тип оу Типы зданий Есть сигнализация Есть пожарный кран и.т.(количество атрибутов известно) Общежитие 3 1 Мастерская 2 0 и т.д. Этот же район Другой тип ОУ Типы зданий Есть сигнализация Есть пожарный кран и.т.(количество атрибутов известно) Общежитие 1 4 Мастерская 2 4 и т.д. Может полегче понять, а то как обычно - сам понимаешь, но объяснить не можешь что нужно |
|||
|
||||
| skyboy |
|
||||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 5 Всего: 260 |
для этого и созданы специальные символьные языки вроде ERD-диаграмм и UML значит, так...
|
||||
|
|||||
| maxnoskov |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 21.6.2006 Где: Мурманск Репутация: нет Всего: нет |
ДА, оно все находит, но я наверное обнаглею, если скажу что мне надо немножко другое:
В таблице не нужно выводить район и тип ОУ. Select должен в зависимости от значения кодов района и типа оу должен формировать такую таблицу, причем незвависимо от района и типа оу должны выводится все типы зданий, поэтому WHERE неподходит |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 5 Всего: 260 |
хм. опять что-то путаться начинаю... |
|||
|
||||
![]()
|
| Правила форума "Общие вопросы по базам данных" | |
|
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |