Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
3-24782
Брат
2002-12-11 11:23
2003.01.09
Хранимая процедура - замена значений null


14-25059
Counter-1
2002-12-20 20:19
2003.01.09
интересоооо


14-25023
Morfein
2002-12-19 20:35
2003.01.09
Хостинг


1-24833
Начинающий програмер
2002-12-27 13:13
2003.01.09
2 вопроса


1-24940
Def
2002-12-26 13:58
2003.01.09
Бегущая строка





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский