powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / SQL запрос
9 сообщений из 9, страница 1 из 1
SQL запрос
    #39460091
4ex88
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые гуру форума, напишите пожалуйста 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
SQL запрос
    #39460094
4ex88,

написал... характер, конечно, не совсем следующий, но вполне себе делает сумму с фильтрами. не стоит благодарности...
подробности тут
...
Рейтинг: 0 / 0
SQL запрос
    #39460096
4ex88
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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
SQL запрос
    #39460097
4ex88,

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

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

В запросе выше это уже все есть, нужно только 2 поля добавить
...
Рейтинг: 0 / 0
SQL запрос
    #39460112
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже сегодня где-то начались зачеты по базам данных...
...
Рейтинг: 0 / 0
SQL запрос
    #39460118
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
SQL запрос
    #39460127
4ex88
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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
SQL запрос
    #39460128
4ex88
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fraks,

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


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