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

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

    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. Такая группа - один проект?
            Есть претензии ко мне как к модератору? читайте Правила, разделы 5 и 6, и действуйте соответственно.
            Есть претензии ко мне как к участнику? да ради бога.
            Не нравятся мои ответы? не читайте их.
            В общем, берегите себя. Нервные клетки не восстанавливаются.
              Задача: Сделать отчет Клиент, СуммаПоступила, СуммаПотрачена

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

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

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

                У одного проекта строго один счёт - допускаю.
                У одного счёта - один проект или много?
                У одного счёта строго один платёж - не верю.
                Есть претензии ко мне как к модератору? читайте Правила, разделы 5 и 6, и действуйте соответственно.
                Есть претензии ко мне как к участнику? да ради бога.
                Не нравятся мои ответы? не читайте их.
                В общем, берегите себя. Нервные клетки не восстанавливаются.
                  Akina

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

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

                      Т.е. не только "в 1 платеже -> 1 счет", но и "в 1 счёте - 1 платёж". Я верно понял?
                      Ибо в схеме-то, что наверху, я вижу как бы иное...
                      Есть претензии ко мне как к модератору? читайте Правила, разделы 5 и 6, и действуйте соответственно.
                      Есть претензии ко мне как к участнику? да ради бога.
                      Не нравятся мои ответы? не читайте их.
                      В общем, берегите себя. Нервные клетки не восстанавливаются.
                        Цитата Akina @
                        Т.е. не только "в 1 платеже -> 1 счет", но и "в 1 счёте - 1 платёж". Я верно понял?

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


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

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

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


                                Рейтинг@Mail.ru
                                [ Script Execution time: 0,1305 ]   [ 17 queries used ]   [ Generated: 19.10.17, 14:29 GMT ]