Объединение запросов путем вложения - PullRequest
0 голосов
/ 15 марта 2020

С помощью приведенного ниже запроса я получаю ЦЕНУ из таблицы «ЦЕНЫ»… Мне нужно создать идентификатор ПОЛЬЗОВАТЕЛЯ, чтобы его можно было ПРИСОЕДИНИТЬ ко второй таблице под названием «ДЕМОРАФИКА». Я хочу взять «Общая стоимость» я получил из этого запроса ниже

Select concat(b.ID_Symbol, ' ', b.ID_Number) AS 'UserID’,
SUM(a.Price) AS 'Total Cost'
From Pricing        a 
Left Join User_Info b On a.unique = B.unique

Что у меня есть:

USER ID Total Cost
A22     100
B33     200
C44     300

… и прикрепить его к этому запросу ниже

Select
UserID
Name,
Address,
Phone
FROM Demographics

Что я хочу:

USER ID  Name       Address      Phone      Total Cost
A22      John Doe   777 5th St   555-5555   100
B33      Sammy Singh222 3rd Blvd 555-5000   200
C44      Melissa Doe555 1st ave  555-5500   300

Я не уверен, как и где и как вложить запрос, если это даже правильный подход ... небольшая помощь?

Ответы [ 3 ]

1 голос
/ 15 марта 2020

Редактировать: Еще одна вещь, которую я заметил, это использование функции CONCAT. Если вы используете Oracle, то это неверно, поскольку CONCAT принимает только 2 значения.

Вы также можете сделать это с помощью длинного подхода создания CTE. Вы не отметили DB, но это универсальное c решение:

with cte1 as
(
  Select
    b.ID_Symbol || ' ' || b.ID_Number AS 'UserID',
    SUM(a.Price) AS 'Total Cost'
  From Pricing a 
  Left Join User_Info b On a.unique = B.unique
  group by b.ID_Symbol, b.ID_Number
)
,cte2 as
(
  Select UserID, Name, Address, Phone
  FROM Demographics
)
select b.UserID, b.Name, b.Address, b.Phone, a."Total Cost"
from cte1 a
join cte2 b on a.UserID=b.UserID
1 голос
/ 15 марта 2020

С подзапросом в предложении select:

select userid, name, address, phone,
  (
    select sum(price)
    from pricing p
    join user_info ui on ui.unique = p.unique
    where concat(ui.id_symbol, ' ', ui.id_number) = d.userid
  ) as total
from demographics d;

С подзапросом в предложении from:

select d.userid, d.name, d.address, d.phone, up.total
from demographics d
join
(
  select concat(ui.id_symbol, ' ', ui.id_number) as userid, sum(price) as total
  from pricing p
  join user_info ui on ui.unique = p.unique
  group by concat(ui.id_symbol, ' ', ui.id_number)
) up on up.userid = d.userid;
0 голосов
/ 15 марта 2020

Хммм. , , Вы, кажется, хотите дополнительно join:

select d.UserID, d.Name, d.Address, d.Phone,
       SUM(p.Price) AS TotalCost
from Pricing p join
     User_Info ui
     on p.unique = ui.unique join
     demographics d
     on d.userid = concat(ui.ID_Symbol, ' ', ui.ID_Number)
group by d.UserID, d.Name, d.Address, d.Phone
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...