Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.15;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.013 c
4-47043
walruz
2003-03-16 13:38
2003.05.15
Help shellAPI


6-46879
Sils
2003-03-17 14:05
2003.05.15
Получение данных !!!


3-46605
NiX
2003-04-23 19:46
2003.05.15
Простейший вопрос по DBGrid-y


1-46734
Mir
2003-05-05 05:46
2003.05.15
Как на одном Label`е отображать текст разным шрифтом, цветом,


1-46817
kol
2003-05-02 14:22
2003.05.15
экспорт класса в DLL