MySQL根据当前表中的单元格从另一个表中获取多个值

时间:2016-06-15 14:32:51

标签: mysql

我正在寻找一些查询帮助,我有两个表:

表1:

id, version, icon1id, icon2id, icon3id, icon4id, icon5id
1   1        1        2        3        2        3
2   1        2        3        4        3        2
3   1        3        4        3        4        2
4   1        4        5        2        2        1

表2:

id, version, iconid, iconname
1   1        1       red
2   1        2       blue
3   1        3       green
4   1        4       purple
5   1        5       yellow
6   2        1       red
7   2        2       purple
8   2        3       blue
9   2        4       yellow
10  2        5       green

我想在表1上运行查询,显示如下内容:

id, version, icon1name, icon2name, icon3name, icon4name, icon5name
1   1        red        blue       green      blue       green

基本上,我希望编写一个使用表1中的'version'和'iconid'的查询,并从表2返回每个匹配的'iconname'。我花了一些时间搜索任何会有所帮助,但我正在努力充分投入工作,正在努力搜索......

非常感谢任何帮助!

由于

2 个答案:

答案 0 :(得分:1)

两种不处理行 - >列的任意数量的方法:

  1. 加入

    从图标中选择table1.id,table1.version,icon1.iconname,icon2.iconname 在table1.version = icon1.version和table1.iconid1 = icon1.iconid上将table1连接为icon1 在table1.version = icon2.version和table1.iconid2 = icon2.iconid ...;

  2. 上将table2连接为icon2
  3. 选择选择(丑陋)

    选择id,版本,(从table2中选择iconname,其中version = version和iconid = iconid1),(从table2中选择iconname,其中version = version和iconid = iconid2),...来自table1;

答案 1 :(得分:0)

我同意Marc B。我也相信,这就是方式,如何解决。或者,您可以尝试以下查询。您必须为其他列添加其他连接。

select table1.id, table1.version, icon1.iconname, icon2.iconname, icon3.iconname from table1
left join
table2 icon1
on table1.version = icon1.version
and table1.icon1id = icon1.iconid 
left join
table2 icon2
on table1.version = icon2.version
and table1.icon2id = icon2.iconid 
left join
table2 icon3
on table1.version = icon3.version
and table1.icon3id = icon3.iconid 
order by table1.id