Разработка запроса для следующего сценария - PullRequest
0 голосов
/ 22 декабря 2009

У меня есть две таблицы - Таблица1:

id  name  number
------------------
1   x1    123
2   x2    234

... и Таблица2:

tbl1id  title  rank
--------------------
1       t1      3
1       t2      2
2       t1      3
1       t3      1

Могу ли я присоединиться к ним, чтобы получить результат, показывающий максимальный заголовок на основе минимального рейтинга для данного пользователя:

id  name  number  max_title  rank
----------------------------------
1   x1    123     't3'        1
2   x2    234     't1'        3

вопрос обновлен!

Ответы [ 2 ]

2 голосов
/ 22 декабря 2009

Использование:

   SELECT t.id,
          t.name,
          t.number,
          COALESCE(x.max_title, 'no title associated') AS max_title
     FROM TABLE1 t
LEFT JOIN (SELECT t2.tbl1id,
                  MAX(t2.title) 'max_title'
             FROM TABLE2 t2
            WHERE t2.rank = (SELECT MIN(rank) 
                               FROM TABLE2 
                              WHERE tbl1id = t2.tbl1id)
         GROUP BY t2.tbl1id) x ON x.tbl1id = t.id
0 голосов
/ 22 декабря 2009
SELECT t1.id, t1.name, t1.number, MAX(t2.title)
FROM Table1 t1
    LEFT JOIN Table2 t2 ON t1.id = t2.tbl1id
GROUP BY t1.id, t1.name, t1.number

EDIT:
- обновлено, чтобы использовать LEFT JOIN, если в этом случае может не быть записи в table2 для данного идентификатора.
- ответ теперь не имеет значения, так как вопрос изменился с момента первоначального. Уходя в историю.

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