У меня есть следующие таблицыSQL Query объединить несколько результатов или объединения таблиц
Планировка Таблица
Dis_ID | OfferID | RequestID
------------------------------------
34564 | 123 | 9
77456 | 123 | 8
25252 | 124 | 7
46464 | 125 | 10
36464 | 125 | 6
35353 | 125 | 5
Запрос Таблица
RequestID | AccountNum |
---------------------------
5 | 548543 |
6 | 548543 |
7 | 684567 |
8 | 684567 |
9 | 684567 |
10 | 548543 |
11 | 684567 |
Ранг Таблица
RankID | OfferId | RequestID | Score
-------------------------------------------
34564 | 123 | 11 | 1
77456 | 124 | 11 | 2
25252 | 125 | 11 | 3
Используя данные выше мне нужен запрос, который будет вести себя следующим образом дали номер запроса смотреть на каждую запись в ранговой таблице в этом примере мы имеем 3 (123, 124, & 125). верните OfferId, который появляется в таблице Disposition меньше всего раз для этого объединенного номера учетной записи. в этом примере offer ID 123 появляется дважды для этого номера учетной записи, offerId 124 появляется один раз, и offer 125 не появляется вообще для этого номера учетной записи. Поэтому offerId 125 должно быть возвращено. Предложение, которое существует в таблице ранга с наименьшими показаниями в таблице Disposition, всегда должно быть возвращено, если они не являются одинаковыми, а затем возвращают предложение с наименьшим значением в поле «Оценка». например, если ни один из offerIDs не появился в таблице Dispostion offerId 123 вернется, так как его показатель значение 1.
результирующая таблица будет выглядеть как этот
| OfferId | Score | Dis_Occurrences
---------------------------------------------------------------
| 123 | 1 | 2
| 124 | 2 | 1
| 125 | 3 | 0 <--Return this record
Это то, что я так далеко.
SELECT oRank.OfferId, oRank.Rank_Number, count(oRank.OfferId) AS NumDispositions
From Rank oRank
join Request req
on oRank.RequestId = req.RequestId
join Disposition dis
on oRank.OfferId = dis.OfferId
where req.Customer_Account_Number = 684567 and req.RequestId = 11 and oRank.OfferId = dis.OfferId
group by oRank.Rank_Number, oRank.OfferId
order by NumDispositions, oRank.Rank_Number
Моя некорректный Результирующая таблица выглядит следующим образом
| OfferId | Score | Dis_Occurrences
---------------------------------------------------------------
| 123 | 1 | 2
| 124 | 2 | 1
| 125 | 3 | 3
Он рассчитывает общее число раз offerId появляется в диспозиции таблице
Sql сервер или MySQL? –
@GiorgiNakeuri Я использую MicrosoftSQL. –
Каким образом должны быть объединены таблицы Rank и Disposition? В вашем примере запроса вы присоединяетесь к ним с помощью RequestID, но в данных примера, которые вы опубликовали, нет общих идентификаторов RequestID. Может быть, вы хотели присоединиться к OfferID вместо этого? – beercohol