Два столбца из таблицы A содержат идентификаторы, которые хранятся в другой таблице B, как выбрать и получить данные, хранящиеся в таблице B? - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть 2 таблицы, таблица A, в которой есть 2 столбца, которые содержат идентификаторы, и таблица B, в которой совпадают идентификаторы с названиями фильмов. Я хочу выбрать строку с названиями фильмов, а не с идентификаторами фильмов, такими как

Таблица A

+-----+----------------------------------------------+
| id  | name   | favmovieid|   leastfavmovieid       |
+-----+----------------------------------------------+
| 101 | Name 1 |     1     |          5              |
| 102 | Name 2 |     6     |          8              |
| 103 | Name 3 |     8     |          6              |
+-----+----------------------------------------------+

Таблица B

+-------+---------------------+
| movid | namemovie           |
+-------+---------------------+
|  1    | Harry Potter 1      |
|  2    | Harry Potter 2      |
|  3    | Harry Potter 3      |
|  4    | Lord of the Rings 1 |
|  5    | Lord of the Rings 2 |
|  6    | Lord of the Rings 3 |
|  7    | Iron Man 1          |
|  8    | Iron Man 2          |
+-------+---------------------+

Я пытался использовать внутреннее соединение, объединяя оба столбца, например

Select TableB.namemovie,TableB.namemovie from 
((TableA inner join TableB on TableA.favmovieid=TableB.movid) inner join on TableB TableA.leastfavmovieid=TableB.movid) where TableA.id=101

Но я получаю сообщение о том, что таблица B упоминается слишком много раз

Тогда я тоже попробовал объединение как

Select TableB.namemovie from (TableA inner join TableB on TableA.favmovieid=TableB.movid)
where TableA.id=101
union 
Select TableB.namemovie from (TableA inner join TableB on TableA.leastfavmovieid=TableB.movid)
where TableA.id=101

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

1 Ответ

0 голосов
/ 08 апреля 2019

Вы были близки, трюк использует псевдоним для ссылки на таблицу при каждом соединении, это должно сработать:

select b1.namemovie,b2.namemovie from TableA 
inner join TableB b1 on TableA.favmovieid=b1.movid 
inner join TableB b2 on TableA.leastfavmovieid=b2.movid
where TableA.id=101
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...