简体   繁体   English

通过外键从其他表中选择数据

[英]Select data from other tables by foreign key

I have 3 tables:我有3张桌子:

Users:用户:

id ID name姓名
1 1 John约翰
2 2 Carol颂歌

Colors:颜色:

id ID name姓名
101 101 Red红色的
102 102 Black黑色的
103 103 Blue蓝色
104 104 Yellow黄色

Votes投票

id ID user用户 vote_01投票_01 vote_02投票_02 vote_03投票_03
1 1 2 2 103 103 101 101 104 104

I would like to see this result我想看到这个结果

id ID name姓名 vote_01投票_01 vote_02投票_02 vote_03投票_03
1 1 Carol颂歌 Blue蓝色 Red红色的 Yellow黄色

Now I have 3 row in the result set, but I want only 1. (vote_01, _02, _03 have hiearchy, i want to store them in one row / user )现在我在结果集中有 3 行,但我只想要 1 行。(vote_01、_02、_03 有层次结构,我想将它们存储在一行/用户中)

SELECT votes.id, users.name AS username, colors.name 
FROM votes 
JOIN users ON votes.user=users.id 
JOIN colors ON (votes.vote_01=colors.id OR votes.vote_02=colors.id OR votes.vote_03=colors.id)

Votes colors are independent, so each separate vote index must be converted to according color with separate independent colors table's copy:投票颜色是独立的,因此每个单独的投票索引必须转换为具有单独独立颜色表副本的颜色:

SELECT votes.id, 
       users.name AS username, 
       c1.name vote_01, 
       c2.name vote_02, 
       c3.name vote_03
FROM votes 
JOIN users ON votes.user=users.id 
JOIN colors с1 ON votes.vote_01=c1.id
JOIN colors с2 ON votes.vote_02=c2.id
JOIN colors с3 ON votes.vote_03=c3.id

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM