![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите написать запрос. [D5, Paradox]
TTCustomDelphiMaster © (2003-01-11 21:16:00)Имеется таблица со следующими полями
ID, ParentID, Flag1, Flag2, Field1
Нужно получить НД со следующими полями
ID - ID у которых Flag1 = True,
CountChild - Количество записей у которых Flag2 = True и ParentID = ID (полученному в первом поле),
SumChild - Сумму по полю Field1 записей у которых Flag2 = True и ParentID = ID (полученному в первом поле)
Заранее спасибо
TTCustomDelphiMaster (2003-01-12 22:37:00) [1]Спасибо. Надеюсь что у меня получится запустить этот код.
Сейчас по причине крайне плохого знания SQL пришлось выкручиваться двумя запросами.
Johnmen (2003-01-12 22:16:00) [2]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 13:04:00) [3]
> SELECT
> A.ID,
> COUNT(B.ID) AS CountChild,
> SUM(B.Field1) AS SumChild,
> (COUNT(B.ID) where B.Flag3 = True) ???
А вообще что-то подобное можно сделать?
TTCustomDelphiMaster (2003-01-12 10:08:00) [4]Спасибо получилось.
А если мне надо в этом же запросе подсчитать количество ящиков в контейнере у которых поле flag3=True (ящик выдан грузополучателю), то получается нужно какой то вложеный запрос делать?
SELECT
A.ID,
COUNT(B.ID) AS CountChild,
SUM(B.Field1) AS SumChild,
(COUNT(B.ID) where B.Flag3 = True) ???
Johnmen (2003-01-12 02:21:00) [5]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 01:28:00) [6]
> WHERE (A.ID=B.ParentID) AND
И еще нужно вывести все контейнеры в которых нет ящиков.
TTCustomDelphiMaster (2003-01-12 01:15:00) [7]Не понял что тут ужасного.
В контейнере ID = 1 имеется 3 ящика
Первый ID = 2 ParentID = 1
Второй ID = 3 ParentID = 1
Третий ID = 4 ParentID = 1
Flag1 показывает что это контейнер
Flag2 показывает что яшик в контейнере
Field1 масса ящика
Нужно получить все контейнеры, количество и массу ящиков в них.
Johnmen спасибо завтра попробую.
Бред. (2003-01-12 00:59:00) [8]2 Ужас. (12.01.03 00:41)
Johnmen (2003-01-12 00:58:00) [9]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:41:00) [10]Не, а правда такой запрос нужен? Если я правильно понял, может так:
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;
Вроде помочь охота, ты всем помогаешь.
TTCustomDelphiMaster (2003-01-11 23:56:00) [11]Кошмар
Ужас. (2003-01-11 23:47:00) [12]