Как отсортировать значения в таблице на основе столбца из другой таблицы и столбца из исходной таблицы? - PullRequest
0 голосов
/ 29 октября 2019

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

Предположим, у меня есть две таблицы: TableA(id, name, b_id) иTableB(id, name). Я пытаюсь создать запрос так, чтобы я мог выводить строки в TableA, упорядоченные по TableB.name и TableA.name.

Например:

TableA
------
1 A4 11
2 A2 12
3 A3 13
4 A1 11

TableB
------
11 B1
12 B2
13 B3

Expected Output
---------------
4 A1 11
1 A4 11
2 A2 12
3 A3 13

Чтобы упорядочить строкипо TableB.name сработало следующее:

SELECT * FROM TableA WHERE b_id IN (SELECT id FROM TableB);

(Wrong) Output
--------------
1 A4 11
4 A1 11
2 A2 12
3 A3 13

А для получения порядка строк по TableA.name сработало следующее:

SELECT * FROM TableA ORDER BY name;

(Wrong) Output
--------------
4 A1 11
2 A2 12
3 A3 13
1 A4 11

Как объединить два запроса, чтобы получить результат, подобный приведенному выше «Ожидаемый результат»?

Ответы [ 2 ]

1 голос
/ 29 октября 2019

Это то, что вы хотите?

SELECT a.*
FROM TableA a JOIN
     TableB b
     ON a.b_id = b.id
ORDER BY b.name, a.name;

Тем не менее, для вашего примера в вопросе, это похоже на работу:

select a.*
from tablea a
order by a.b_id, a.name;
0 голосов
/ 29 октября 2019

выходных строк в TableA ...

Поэтому вы можете рассмотреть возможность использования LEFT JOIN, чтобы не потерять ни одной строки в TableA:

SELECT a.*
FROM TableA a LEFT JOIN
     TableB b
     ON a.b_id = b.id
ORDER BY b.name, a.name;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...