На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! информация о разделе
user posted imageДанный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных - обсуждаем в разделе "Базы данных: общие вопросы". Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ.

Модераторы: Akina
Страницы: (15) 1 [2] 3 4 ...  14 15 все  ( Перейти к последнему сообщению )  
> Помогите с запросом
    Можно я все глупые вопросы буду писать тут? :)

    ExpandedWrap disabled
      use PJM10
      SELECT   sum(PaymentDetail.Value) AS СуммаПриход, QUOTENAME(Company.FileAs,'"') AS Компания,  sum(TimeEntry.Rate) AS СуммаРасхода
      FROM         PaymentDetail
                              INNER JOIN Payment ON PaymentDetail.PaymentID = Payment.ID
                              INNER JOIN   Company ON Payment.PayerCompanyID = Company.ID
                              INNER JOIN Invoice ON PaymentDetail.InvoiceID = Invoice.ID
                            
                            INNER JOIN Project ON Invoice.ProjectID = Project.ID
                           INNER JOIN TimeEntry ON Project.ID = TimeEntry.ProjectID
                            
      WHERE     (Payment.FileAs LIKE N'%-1%') AND (Payment.Date BETWEEN '01.01.2017' AND '31.08.2017')
      GROUP BY Company.FileAs
      ORDER BY Company.FileAs

    Project - таблица проектов
    TimeEntry - таблица учета времени\затрат по проектам

    Не могу понять как мне сделать так, чтобы SQL суммировал все TimeEntry.Rate для каждого данного проекта.

    Добавлено
    А то получается сейчас берется как понимаю первое вхождение
      ^D^ima, а почему ты именно INNER JOIN делаешь, а не LEFT JOIN?
        Цитата kosten @
        LEFT JOIN

        Я пробовал разные варианты, проблему это не решает.
        Если была это 1с-ка было бы все легко. Тут как понимаю если делать встроенный запрос в запрос, то вначале выполняется 2-й встроенный, потом первый...
          ^D^ima, давай-ка структура таблиц.
            Цитата kosten @
            почему ты именно INNER JOIN делаешь, а не LEFT JOIN?

            А что в запросе могло натолкнуть на мысль о необходимости LEFT JOIN???
            Цитата ^D^ima @
            как мне сделать так, чтобы SQL суммировал все TimeEntry.Rate для каждого данного проекта.

            У тебя в запросе выполняется группировка по Company.FileAs. Такая группа - один проект?
              Задача: Сделать отчет Клиент, СуммаПоступила, СуммаПотрачена

              Связанность таблиц:
              Payment и PaymentDetail это платежи денег, которые поступают на счет, из них берется Клиент и СуммаПоступила

              далее сложнее.
              В каждом платеже есть только 1 счет. Таблица Invoice.
              Каждый счет связан с конкретным проектом. Таблица Project.
              В каждом проекте есть учет времени. Таблица TimeEntry, из которой берется TimeEntry.Rate СуммаПотрачена. Трудность в том что в каждом проекте может быть много учетов времени, которые нужно суммировать.

              1 платеж - 1 счет - 1 проект - много учетов времени
                Цитата ^D^ima @
                1 платеж - 1 счет - 1 проект - много учетов времени

                У одного проекта строго один счёт - допускаю.
                У одного счёта - один проект или много?
                У одного счёта строго один платёж - не верю.
                  Akina

                  В 1 платеже -> 1 счет(не бывает счета связанного с несколькими платежами) -> каждый счет связан с 1 проектом (не бывает одного счета связанного с 2 проектами) -> каждый проект связан со многими записями о времени.
                    Цитата ^D^ima @
                    не бывает счета связанного с несколькими платежами

                    Если оплата по проекту разбита по времени, то каждый раз надо платить на разные счета?
                      Цитата ^D^ima @
                      В 1 платеже -> 1 счет(не бывает счета связанного с несколькими платежами)

                      Т.е. не только "в 1 платеже -> 1 счет", но и "в 1 счёте - 1 платёж". Я верно понял?
                      Ибо в схеме-то, что наверху, я вижу как бы иное...
                        Цитата Akina @
                        Т.е. не только "в 1 платеже -> 1 счет", но и "в 1 счёте - 1 платёж". Я верно понял?

                        В таблице платежа есть ссылка на счет, в счете ссылки на платеж нет.


                        Цитата kosten @
                        Если оплата по проекту разбита по времени, то каждый раз надо платить на разные счета?

                        Возможно что к проекту привязан не 1 счет, но от этого цепочка не меняется
                          Цитата ^D^ima @
                          в счете ссылки на платеж нет

                          Пробегал мимо, суть задачи не уловил. Но осуждаю :lol:
                          Если связь A->B есть, а B->A нет, но нужна, то просто "склеивайте" нужный запрос с нужным порядком полей, и пользуйте его как "источник".
                          Сорри, если не в тему, и не впопад)
                            Моя задача не решает в принципе или я неверно изложил?
                              Да решается она, решается. Просто ты её неполно изложил, а догадываться тупо лень.
                              Если, ориентируясь на твой запрос, составить эскиз схемы данных, то получится что-то типа
                              Прикреплённый файлПрикреплённый файл1.png (15,13 Кбайт, скачиваний: 1402) .
                              Дорисуй, где один, а где много...
                                Akina
                                Все верно. везде 1, TimeEntry много.
                                Я имею в ввиду что в таблице TimeEntry много вхождений по одному ProjectID
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (15) 1 [2] 3 4 ...  14 15 все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0433 ]   [ 18 queries used ]   [ Generated: 18.04.24, 23:35 GMT ]