MYSQL запрос «многие ко многим» к одной и той же таблице - PullRequest
0 голосов
/ 05 февраля 2019

TABLE A ниже приведена таблица «многие ко многим», которая ссылается на ту же таблицу TABLE X, и у меня есть еще одна TABLE B, которая также ссылается на TABLE X.Я хотел бы создать запрос, который отображает две таблицы.

ТАБЛИЦА A

measure_id | related_measure_id
   1       |     2         
   1       |     4         
   1       |     5        
   2       |     3
   2       |     4         
   2       |     6        
   3       |     5        

ТАБЛИЦА B

  id    | name    | measure_id
   A    | Adam    |     1         
   B    | Bill    |     2         
   C    | Cate    |     2        
   D    | Dale    |     3         
   E    | Emma    |     3         
   F    | Fawn    |     4         
   G    | Gale    |     5         
   H    | Hale    |     5
   I    | Iale    |     5
   J    | Jake    |     6

Желаемый результат:

  id    | name    | id2 | name2
   A    | Adam    |  B  | Bill   
   A    | Adam    |  C  | Cate        
   A    | Adam    |  F  | Fawn       
   A    | Adam    |  G  | Gale
   A    | Adam    |  H  | Hale
   A    | Adam    |  I  | Iale
   B    | Bill    |  D  | Dale
   B    | Bill    |  E  | Emma
   B    | Bill    |  F  | Fawn
   B    | Bill    |  J  | Jake
   C    | Cate    |  D  | Dale
   C    | Cate    |  E  | Emma
   C    | Cate    |  F  | Fawn
   C    | Cate    |  J  | Jake
   D    | Dale    |  H  | Hale
   D    | Dale    |  I  | Iale
   E    | Emma    |  H  | Hale
   E    | Emma    |  I  | Iale

Попытка:

select b.id, b.name
from tableB b
join tableA a1 on b.measure_id=a1.measure_id 
join tableA a2 on b.measure_id=a2.related_measure_id

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Проверено на db-fiddle, должно работать.

SELECT B1.id AS id, B1.name AS name, B2.id AS id2, B2.name AS name2
FROM tableA AS A
JOIN tableB AS B1
    ON A.measure_id = B1.measure_id
JOIN tableB AS B2
    ON A.related_measure_id = B2.measure_id

db-fiddle.com

0 голосов
/ 05 февраля 2019

Я думаю, что-то вроде этого должно работать

select b1.id, b1.name, b2.id, b2.name
from tableA a, 
join tableB b1 on a.measure_id = b1.related_measure_id
join tableB b2 on a.measure_id = b2.related_measure_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...