MYSQL多对多查询到相同的表

问题描述 投票:1回答:2

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
mysql sql
2个回答
2
投票

测试在DB-小提琴,它应该工作。

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


-1
投票

我觉得这样的事情应该工作

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
© www.soinside.com 2019 - 2024. All rights reserved.