Как мне объединить 3 таблицы, которые генерируют этот результат? - PullRequest
0 голосов
/ 07 июня 2018

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

   Users             Requests           Orders
+-----------+     +-------------+     +---------+
| UserId    |<--->| RequesterId |<--->| BuyerId |
+-----------+     +-------------+     +---------+
| FirstName |     | RequestId   |
+ ----------+     +-------------+
| LastName  |
+-----------+

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

Результат, которого я хочу достичьis:

+---------+-------------------+------------------+---------------+--------------+
|RequestId|Requester FirstName|Requester LastName|Buyer FirstName|Buyer LastName|
+---------+-------------------+------------------+---------------+--------------+

Вот мой неудачный запрос:

SELECT

 R.RequestID as 'Order #'
,U.FirstName as 'Requester First Name'
,U.LastName as 'Requester Last Name'
,U.FirstName as 'Buyer First Name'
,U.LastName as 'Buyer Last Name'

FROM Requests R

INNER JOIN Users U
ON R.RequesterId = U.UserId

INNER JOIN Orders O
ON U.UserId = O.BuyerID

Очевидно, я делаю это совершенно неправильно, но я не знаю, что это такое.Может кто-нибудь дать мне подсказку?

Спасибо !!

1 Ответ

0 голосов
/ 07 июня 2018

Вам нужно будет рассматривать пользователей как две отдельные таблицы и вызывать одну U1, а другую U2.Таким образом, ваши исходные вызовы выбора будут

U1.FirstName as 'Requester First Name'
,U1.LastName as 'Requester Last Name'
,U2.FirstName as 'Buyer First Name'
,U2.LastName as 'Buyer Last Name'

Редактировать: я не проверял это, поэтому не знаю, работает ли он, но попробуйте:

SELECT

 R.RequestID as 'Order #'
,U1.FirstName as 'Requester First Name'
,U1.LastName as 'Requester Last Name'
,U2.FirstName as 'Buyer First Name'
,U2.LastName as 'Buyer Last Name'

FROM Requests R

INNER JOIN Users U1
ON R.RequesterId = U1.UserId

INNER JOIN Orders O
ON R.RequesterId = O.BuyerID

INNER JOIN Users U2
ON O.BuyerID = U2.UserId

Редактируйте сноваТеперь, когда я прочитал некоторые комментарии, я не думаю, что мой код будет работать, потому что я не думаю, что понимаю разницу между BuyerID и RequesterID в ваших таблицах.Я думаю, вам понадобится отдельное поле в таблице «Заказы» для связи с таблицей «Заявитель», а затем измените мой код выше, изменив

ON R.RequesterId = O.BuyerID

на

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