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

Вниз

Помогите написать запрос.   Найти похожие ветки 

 
TTCustomDelphiMaster ©   (2003-01-11 21:16) [0]

Имеется таблица со следующими полями
ID, ParentID, Flag1, Flag2, Field1

Нужно получить НД со следующими полями
ID - ID у которых Flag1 = True,
CountChild - Количество записей у которых Flag2 = True и ParentID = ID (полученному в первом поле),
SumChild - Сумму по полю Field1 записей у которых Flag2 = True и ParentID = ID (полученному в первом поле)

Заранее спасибо


 
Ужас.   (2003-01-11 23:47) [1]



 
TTCustomDelphiMaster ©   (2003-01-11 23:56) [2]

Кошмар


 
Ужас.   (2003-01-12 00:41) [3]

Не, а правда такой запрос нужен? Если я правильно понял, может так:

SELECT

Table1.ID,
CountChild,
SumChild

FROM

Table1,
(SELECT
Count(ID) AS CountChild,
Sum(Field1) as SumChild
FROM Table1
HAVING
FLAG2=TRUE AND ParentID=ID AND FLAG1 = TRUE)

WHERE Table1.FLAG1=TRUE;

Вроде помочь охота, ты всем помогаешь.


 
Johnmen ©   (2003-01-12 00:58) [4]

SELECT
A.ID,
COUNT(B.ID) AS CountChild,
SUM(B.Field1) AS SumChild,
FROM Table A, Table B
WHERE (A.ID=B.ParentID) AND
(<A.Flag1=True>) AND
(<B.Flag2=True>)
GROUP BY A.ID


 
Бред.   (2003-01-12 00:59) [5]

2 Ужас. (12.01.03 00:41)


 
TTCustomDelphiMaster ©   (2003-01-12 01:15) [6]

Не понял что тут ужасного.

В контейнере ID = 1 имеется 3 ящика
Первый ID = 2 ParentID = 1
Второй ID = 3 ParentID = 1
Третий ID = 4 ParentID = 1

Flag1 показывает что это контейнер
Flag2 показывает что яшик в контейнере

Field1 масса ящика

Нужно получить все контейнеры, количество и массу ящиков в них.

Johnmen спасибо завтра попробую.


 
TTCustomDelphiMaster ©   (2003-01-12 01:28) [7]


> WHERE (A.ID=B.ParentID) AND


И еще нужно вывести все контейнеры в которых нет ящиков.


 
Johnmen ©   (2003-01-12 02:21) [8]

SELECT
A.ID,
COUNT(B.ID) AS CountChild,
SUM(B.Field1) AS SumChild
LEFT JOIN Table B ON A.ID=B.ParentID
FROM Table A
WHERE (<A.Flag1=True>) AND (<B.Flag2=True>)
GROUP BY A.ID


 
TTCustomDelphiMaster ©   (2003-01-12 10:08) [9]

Спасибо получилось.
А если мне надо в этом же запросе подсчитать количество ящиков в контейнере у которых поле flag3=True (ящик выдан грузополучателю), то получается нужно какой то вложеный запрос делать?
SELECT
A.ID,
COUNT(B.ID) AS CountChild,
SUM(B.Field1) AS SumChild,
(COUNT(B.ID) where B.Flag3 = True) ???


 
TTCustomDelphiMaster ©   (2003-01-12 13:04) [10]


> SELECT
> A.ID,
> COUNT(B.ID) AS CountChild,
> SUM(B.Field1) AS SumChild,
> (COUNT(B.ID) where B.Flag3 = True) ???


А вообще что-то подобное можно сделать?


 
Johnmen ©   (2003-01-12 22:16) [11]

SELECT
A.ID, A.Flag3,
COUNT(B.ID) AS CountChild,
SUM(B.Field1) AS SumChild
LEFT JOIN Table B ON A.ID=B.ParentID
FROM Table A
WHERE (<A.Flag1=True>) AND (<B.Flag2=True>)
GROUP BY A.ID, A.Flag3


 
TTCustomDelphiMaster ©   (2003-01-12 22:37) [12]

Спасибо. Надеюсь что у меня получится запустить этот код.
Сейчас по причине крайне плохого знания SQL пришлось выкручиваться двумя запросами.



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

Текущий архив: 2003.01.30;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
6-96905
TankMan
2002-11-27 03:06
2003.01.30
Как узнать свой IP в сетке а не в Инете....


14-97003
Шутник
2003-01-13 16:08
2003.01.30
Про лес


14-96986
Whippi
2003-01-13 10:52
2003.01.30
Запись CD-дисков


1-96719
Robb
2003-01-22 11:24
2003.01.30
Как реализовать что-то типа компонента Dialogs


1-96647
bvn123
2003-01-21 12:32
2003.01.30
Будут проблемы? GetMem(Buffer, FileSize); FileSize>1M;