Форум: "Базы";
Текущий архив: 2003.01.09;
Скачать: [xml.tar.bz2];
ВнизПомогите составить запрос... Найти похожие ветки
← →
Karbo (2002-12-14 12:42) [0]Одна таблица Z и три таблицы A,B,C :
Z
Index Town
----------------
111000 Ufa
222000 Tomsk
333000 Sochi
444000 Kiev
A B C
Name | Num Color | Num Chip | Num
------------- ------------- ----------------
Katya | 45 Red |222000 K155ИЕ6 | 12
Sveta |111000 Black | 123 PIC16F84| 222000
Olya |111000 White |333000 1401УД2 | 0
Laysan| 34 Yellow|111000
Lena |111000 Blue |222000
Cyan |333000
Как получить результат - такой :
| A | B | C
------------------------
Ufa | 3 | 1 | 0
Tomsk | 0 | 2 | 1
Sochi | 0 | 2 | 0
Kiev | 0 | 0 | 0
Все мои варианты BDE c хохотом отвергает. HELP !!!!
← →
oleg_er (2002-12-14 12:55) [1]что-то типа этого...
select town, count(a.num), count(b.num), count(c.num)
from a, b, c
where a.index=b.num and a.index=b.num and a.index=c.num
возможно надо добавить group by town
а вообще в форуме такие вопросы часто встречаются...
← →
Karbo (2002-12-14 14:35) [2]--> oleg_er
Все это я уже пробовал.
select z.town, count(a.num), count(b.num), count(c.num)
from z, a, b, c
where a.index=b.num and a.index=b.num and a.index=c.num
--> GROUP BY is required when both aggreate and non-aggregate fields are used in result set
select z.town, count(a.num), count(b.num), count(c.num)
from z, a, b, c
where a.index=b.num and a.index=b.num and a.index=c.num
group by z.town
--> When GROUP BY exists, every simple field in projectors must be in GROUP BY
Последнее мне совершенно непонятно. Ведь в GROUP BY как раз есть единственное "simple field" - z.town !
← →
ЮЮ (2002-12-15 03:17) [3]Начнем с того, что a, b и c связаны отношением M:N, т.е. например, если в a,в и с есть по 2 записи с num=111000, то запрос
from a, b, c
where a.index=b.num and a.index=b.num and a.index=c.num
вернёт 8 записей и все sum() вернут 8. Тебе это надо?
Далее
from z, a, b, c и никакой связи с z !!! Т.е. записей вернет (кол-во записей в z) X ранее сказанное.
← →
Karbo (2002-12-15 08:41) [4]-->ЮЮ
Пальцем покажи. После select мне что без мата написать ?
← →
ЮЮ (2002-12-15 11:11) [5]Для начала пальцем напиши какая БД и чем её юзаешь
← →
ads (2002-12-15 13:31) [6]select T.Town, Count(distinct N.Name) as Nam , Count(distinct C.Color) as Col, Count(distinct Ch.Chip) as Ch
from Towns as T
left join Names as N on N.Num = T.[index]
left join Colors as C on C.Num = T.[index]
left join Chips as CH on CH.Num = T.[index]
group by T.town
← →
GLUKAS (2002-12-15 13:41) [7]А так:
Select z.town, (select count(*) from a where a.num=z.town),(select count(*) from b wh...
медленно но верно!
← →
Karbo (2002-12-15 17:24) [8]-->GLUKAS
Результат получился не совсем то, что мне надо, а именно
Town F F_1 F_2
----------------------------
Ufa 3 5 1
Tomsk 3 5 1
Sochi 3 5 1
Kiev 3 5 1
..Да, так, кажется... но за идею спасибо! Сейчас попробую что нибудь замутить на ее основе...
-->ads
Тестирую...
-->ЮЮ
Paradox 7, D6
← →
Karbo (2002-12-16 10:05) [9]-->ads
Не то, что надо.
Дает результат
select T.Town, Count(distinct N.Name) as Nam , Count(distinct C.Color) as Col, Count(distinct Ch.Chip) as Ch
from Towns as T
left join Names as N on N.Num = T.[index]
left join Colors as C on C.Num = T.[index]
left join Chips as CH on CH.Num = T.[index]
group by T.town
Town .. .. ..
----------------------------
Ufa 1 1 0
Tomsk 0 1 1
Sochi 0 1 0
Kiev 0 0 0
Если убрать из запроса все distinct, получается все равно ботва:
Town .. .. ..
----------------------------
Ufa 3 3 0
Tomsk 0 2 2
Sochi 0 2 0
Kiev 0 0 0
Все-таки хотелось бы получить
Town .. .. ..
----------------------------
Ufa 3 1 0
Tomsk 0 2 1
Sochi 0 2 0
Kiev 0 0 0
Грусть.
← →
ЮЮ (2002-12-16 11:27) [10]Здесь без нормальных подзапросов не обойтись. А Local SQL этого не позволяет в ожном запросе. Правда в BDE есть Local Views, но, говорят, он не у всех работает.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.01.09;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c