Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.05.15;
Скачать: [xml.tar.bz2];

Вниз

Связанные таблицы   Найти похожие ветки 

 
sanbah   (2003-04-24 09:34) [0]

Помогите решть следующую задачу

Есть две связанные таблицы

1 таблица главная
Id Name Doxod
1 Стол 20
2 Стул 10
...

2 таблица подчиненная
Id Name Zatrati Id_1tabl
1 Клей 2 1
2 Гвозди 3 1
...

Нужно написать запрос в который попадают все записи 1таблицы и сумма поля
Zatrati для каждой записи т.е.

Стол 20 5
Стул 10 0


 
Johnmen   (2003-04-24 09:44) [1]

SELECT M.Name,M.Doxod,SUM(D.Zatrati) FROM Table1 M
JOIN Table2 D ON D.Id_1tabl=M.Id
GROUP BY M.Name,M.Doxod


 
sanbah   (2003-04-24 10:49) [2]

Что то этот запрос не хочет работать


 
D   (2003-04-24 11:20) [3]

А что пишет?

Попробуйте то же самое, но с именами таблиц целиком:
select table1.id, table1.name, table1.doxod, sum(table2.zatraty) from Table1 LEFT OUTER JOIN table2 on table1.id = table2.id_1tabl group by table1.id


 
Johnmen   (2003-04-24 11:23) [4]

>sanbah (24.04.03 10:49)
>Что то этот запрос не хочет работать

Как это видно ?

>D (24.04.03 11:20)

Даже пробовать не стОит...:) Ошибок много...




 
Orlan Master   (2003-04-24 11:28) [5]

>Johnmen ©
>SELECT M.Name,M.Doxod,SUM(D.Zatrati) FROM Table1 M
> !INNER! JOIN Table2 D ON D.Id_1tabl=M.Id
>GROUP BY M.Name,M.Doxod
может быть с этим пойдет лучше?

> D
Нафига такие кроссы с "LEFT OUTER JOIN"? все слишком просто, запросто вяжется с inner join




 
Zacho   (2003-04-24 11:34) [6]


> Orlan Master (24.04.03 11:28)

В IB JOIN это и есть INNER JOIN, так что без разницы


 
D   (2003-04-24 11:34) [7]

Свяжется, не спорю :)

НО Если окажется, что для какого-то изделия затраты во 2 таблице не заданы, то это изделие просто не попадет в запрос.
Правда, неизвестно, есть ли такие записи(не имеющие подчиненн.), и что нужно в этом случае получить.


 
Johnmen   (2003-04-24 11:35) [8]

>Orlan Master (24.04.03 11:28)

... [INNER] JOIN ...

Квадратные скобки означают умалчиваемый предикат...:)



 
SiJack   (2003-04-24 11:35) [9]

>sanbah
Почитай Jetsql40.chm


 
SiJack   (2003-04-24 11:36) [10]

cорри перепутал ДБ


 
Orlan Master   (2003-04-24 11:38) [11]

>D
А правила обязательного наличия значения задаются на уровне аттрибута сущности. А их вроде как не огласили. Согласен, что такой запрос в качестве отладочного для проверки наличия null-евых записей через OUTER JOIN в самый раз. ;)


 
MsGuns   (2003-04-24 12:27) [12]

SELECT M.Name, M.Doxod, SUM(D.Zatrati) [as AllCost]
FROM Table1 M, Table2 D
WHERE D.Id_1tabl=M.Id

На фига JOIN там, где он в принципе не нужен ? Ведь в детале нет записей с указателем, отсутствующем в Мастере. А если даже и есть (суть нарушение целостности), то для данного запроса (итого по столам, т.е. ключам Мастера) они и на фиг не нужны.




 
sanbah   (2003-04-24 13:56) [13]

>MsGuns © (24.04.03 12:27)
SELECT M.Name, M.Doxod, SUM(D.Zatrati) [as AllCost]
FROM Table1 M, Table2 D
WHERE D.Id_1tabl=M.Id
На этот запрос вылетает следующая ошибка -104 (invalid column referense)
Ошибка вылетает когда пишу SUM(D.Zatrati).

В подчиненной таблице затраты могут отсутствовать Это отображено в примере "Стул"

Также пробовал через JOIN ошибка таже



 
Johnmen   (2003-04-24 14:13) [14]

Как уже было сказано нужен LEFT

SELECT M.Name,M.Doxod,SUM(D.Zatrati) FROM Table1 M
LEFT JOIN Table2 D ON D.Id_1tabl=M.Id
GROUP BY M.Name,M.Doxod




 
MsGuns   (2003-04-24 16:11) [15]

>sanbah (24.04.03 13:56)
>SELECT M.Name, M.Doxod, SUM(D.Zatrati) [as AllCost]
Что, прям так и всобачил ? Вместе с моими примечаниями об именовании динамически образуемых полей ?

>Johnmen © (24.04.03 14:13)

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


 
sanbah   (2003-04-24 22:07) [16]

Всем спасибо все получилось через Left JOIN т.к. советовал Johnmen



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.05.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.012 c
14-46918
Фикус
2003-04-25 08:22
2003.05.15
Анекдот - кошмар юниксоида :)


6-46891
Юров Владимир
2003-03-18 08:49
2003.05.15
Курс доллара


7-47015
Brutusss
2003-03-20 11:29
2003.05.15
Иконка в трее в Win2k


1-46824
Сан Саныч
2003-05-02 08:50
2003.05.15
Как кзнать цвет парент-а ?


1-46711
XAMLO
2003-05-04 15:34
2003.05.15
Название функции или процедуры?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский