Устранение неполадок, связанных с работой 4 связанных таблиц SQL - PullRequest
1 голос
/ 25 марта 2020

У меня есть 4 таблицы:

  • Customer (CustomerID (PK), FirstName, LastName)
  • Order (OrderID (PK), CustomerID (FK))
  • Покупка (OrderID (FK), GameID (FK), Количество)
  • Игры (GameID (PK), RetailPrice)

Я хотел бы перечислить имена всех клиентов чьи заказы составляют более $ 150.

То, что у меня было, работает:

SELECT 
    "p"."OrderID", SUM("p"."Quantity" * "g"."RetailPrice") "TotalPrice"
FROM 
    "Purchase" "p" 
JOIN 
    "Games" "g" ON ("p"."GameID" = "g"."GameID")
GROUP BY 
    "p"."OrderID"
HAVING 
    SUM("p"."Quantity" * "g"."RetailPrice") >= 150

Я попытался объединить таблицы клиентов и заказов, что работает, но как только я пытаюсь выбрать имя и фамилию столбцы, это не работает; Я получаю сообщение об ошибке

Не в агрегатной функции или группе по предложению

SELECT 
    "c"."FirstName", "c"."LastName", 
    "p"."OrderID", SUM("p"."Quantity" * "g"."RetailPrice") "TotalPrice"
FROM 
    "Customer" "c" 
JOIN 
    "Order" "o" ON "c"."CustomerID" = "o"."CustomerID" 
JOIN 
    "Purchase" "p" ON "o"."OrderID" = "p"."OrderID" 
JOIN  
    "Games" "g" ON ("p"."GameID" = "g"."GameID")
GROUP BY 
    "p"."OrderID"
HAVING 
    SUM("p"."Quantity" * "g"."RetailPrice") >= 150

Ни одно из объяснений, которые я видел в Интернете относительно агрегатных функций и объединяющихся таблиц, не имеет было достаточно, чтобы я понял, что мне нужно сделать, чтобы сделать эту работу. Каков правильный запрос для этого и почему это правильный запрос?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...