Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / SQL запрос / 9 сообщений из 9, страница 1 из 1
26.05.2017, 07:40
    #39460091
4ex88
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос
Уважаемые гуру форума, напишите пожалуйста SQL запрос следующего характера:
Данные:
Client.Name, Client.Sex, Client.BirthDate, Client.Telephone по ClientCard.ClientID из ClientCard

CCard.Val по ClientCard.CCardID из ClientCard

Counter.Code по Counter.ID из (CCardCounter.CounterID по ClientCard.CCardID),

Сумма всех CounterD.Delta с фильтром по значению в поле CounterD.ExpiredDate по Counter.ID из (CCardCounter.CounterID по ClientCard.CCardID)

Таблицы: Client, CCard, ClientCard, CCardCounter, Counter, CounterD
...
Рейтинг: 0 / 0
26.05.2017, 07:55
    #39460094
SQL запрос
4ex88,

написал... характер, конечно, не совсем следующий, но вполне себе делает сумму с фильтрами. не стоит благодарности...
подробности тут
...
Рейтинг: 0 / 0
26.05.2017, 08:05
    #39460096
4ex88
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
SELECT T.ID AS "ID клиента",
      T.NAME AS "ФИО клиента",
      CASE
        WHEN T.SEX = 1 THEN 'Мужской'
        WHEN T.SEX = 2 THEN 'Женский'
        ELSE 'Ну указан'
      END AS "Пол",
      T.BIRTHDATE AS "Дата рождения",
      T.TELEPHONE AS "Номер телефона",
      M.CCARDID AS "Номер карты",       //заменить на val из таблицы Ccard
                                               //добавить code из таблицы Counter
      SUM(CD.DELTA) AS "Дельта",
      CD.DELTADATE AS "Дата дельты"
FROM CLIENT T
LEFT OUTER JOIN CLIENTCARD M ON T.ID = M.CLIENTID
LEFT OUTER JOIN(SELECT H.CCARDID AS CCARDID,
                      H.COUNTERID AS COUNTERID
               FROM CCARDCOUNTER H
               INNER JOIN(SELECT MAX(Z.ID) AS ID
                          FROM CCARDCOUNTER Z
                          GROUP BY Z.CCARDID) P ON H.ID = P.ID) CCC
ON M.CCARDID = CCC.CCARDID
LEFT OUTER JOIN COUNTERD CD ON CCC.COUNTERID = CD.COUNTERID and CD.ExpiredDate ='30.11.2017'
GROUP BY T.ID, T.NAME, T.SEX, T.BIRTHDATE, T.TELEPHONE, M.CCARDID, CD.DELTADATE



Надо только 2 столбца еще добавить
Модератор: Пользуйтесь тегом [src]
...
Рейтинг: 0 / 0
26.05.2017, 08:09
    #39460097
SQL запрос
4ex88,

ну ты правда думаешь, что по той постановке, что ты привел кто-то поймет, что же тебе нужно?
что в твоем понимание "сумма с фильтром"? просуммировать только определенные значения? раскидать все суммы на две колонки по какому-то критерию? что-то ещё?
...
Рейтинг: 0 / 0
26.05.2017, 08:19
    #39460101
4ex88
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос
Добрый Э - Эх,

Сумма значений Delta по определенной дате в поле ExpiredDate

В запросе выше это уже все есть, нужно только 2 поля добавить
...
Рейтинг: 0 / 0
26.05.2017, 08:41
    #39460112
fraks
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос
Похоже сегодня где-то начались зачеты по базам данных...
...
Рейтинг: 0 / 0
26.05.2017, 08:52
    #39460118
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос
4ex88,

за такие запросы руки отрывать надо.
1. Пользуйся тэгом SRC sql
2. Перепиши через CTE для начала а то в твоей этажерке ничего не поймёшь

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
WITH P
AS (SELECT
        MAX(Z.ID) AS ID
    FROM
        CCARDCOUNTER Z
    GROUP BY Z.CCARDID),
CCC
AS (SELECT
        H.CCARDID AS CCARDID,
        H.COUNTERID AS COUNTERID
    FROM
        CCARDCOUNTER H
        INNER JOIN P ON H.ID = P.ID)
SELECT
    T.ID AS "ID клиента",
    T.NAME AS "ФИО клиента",
    CASE
      WHEN T.SEX = 1
      THEN 'Мужской'
      WHEN T.SEX = 2
      THEN 'Женский'
      ELSE 'Ну указан'
    END AS "Пол",
    T.BIRTHDATE AS "Дата рождения",
    T.TELEPHONE AS "Номер телефона",
    M.CCARDID AS "Номер карты", --заменить на val из таблицы Ccard
    --добавить code из таблицы Counter
    SUM(CD.DELTA) AS "Дельта",
    CD.DELTADATE AS "Дата дельты"
FROM
    CLIENT T
    LEFT OUTER JOIN CLIENTCARD M ON T.ID = M.CLIENTID
    LEFT OUTER JOIN CCC ON M.CCARDID = CCC.CCARDID
    LEFT OUTER JOIN COUNTERD CD ON CCC.COUNTERID = CD.COUNTERID
          AND CD.EXPIREDDATE = '30.11.2017'
GROUP BY T.ID, T.NAME, T.SEX, T.BIRTHDATE, T.TELEPHONE, M.CCARDID, CD.DELTADATE



что ты там хочешь этим запросом я так и не понял
...
Рейтинг: 0 / 0
26.05.2017, 09:02
    #39460127
4ex88
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
SELECT T.ID AS "ID клиента",
       T.NAME AS "ФИО клиента",
       CASE
         WHEN T.SEX = 1 THEN 'Мужской'
         WHEN T.SEX = 2 THEN 'Женский'
         ELSE 'Ну указан'
       END AS "Пол",
       T.BIRTHDATE AS "Дата рождения",
       T.TELEPHONE AS "Номер телефона",
       M.CCARDID AS "Номер карты",                        заменить на val из таблицы Ccard
                                                          добавить code из таблицы Counter
       SUM(CD.DELTA) AS "Дельта",
       CD.DELTADATE AS "Дата дельты"
FROM CLIENT T
LEFT OUTER JOIN CLIENTCARD M ON T.ID = M.CLIENTID
LEFT OUTER JOIN(SELECT H.CCARDID AS CCARDID,
                       H.COUNTERID AS COUNTERID
                FROM CCARDCOUNTER H
                INNER JOIN(SELECT MAX(Z.ID) AS ID
                           FROM CCARDCOUNTER Z
                           GROUP BY Z.CCARDID) P ON H.ID = P.ID) CCC
ON M.CCARDID = CCC.CCARDID
LEFT OUTER JOIN COUNTERD CD ON CCC.COUNTERID = CD.COUNTERID and CD.ExpiredDate ='30.11.2017'
GROUP BY T.ID, T.NAME, T.SEX, T.BIRTHDATE, T.TELEPHONE, M.CCARDID, CD.DELTADATE



Простите ))
...
Рейтинг: 0 / 0
26.05.2017, 09:03
    #39460128
4ex88
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос
fraks,

Нееет :)
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / SQL запрос / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]