Cool_Breeze 发表于 2022-7-27 15:23

sql 一张表的字段存放的另一张表的ID,怎么查询出另一张表的所有数据?

比如这样:
Route表字段ST1....STN存的workStation 表中的ID。
SELECT Route.name,workStation.normal,f2.normal,f3.normal,f4.normal,f5.normal,f6.normal,f7.normal
FROM Route
join workStation on Route.ST1 = workStation.id
join workStation f2 on Route.ST2 = f2.id
join workStation f3 on Route.ST3 = f3.id
join workStation f4 on Route.ST4 = f4.id
join workStation f5 on Route.ST5 = f5.id
join workStation f6 on Route.ST6 = f6.id
join workStation f7 on Route.ST7 = f7.id;

还有其它方法吗?

Cool_Breeze 发表于 2022-7-27 17:37

workStation存放的是单个工站的信息,route将几十到上百个工站连接起来。所有有了这个结构,不知道还有其它结构比这个更好的吗?,这个结构就是不好查询。

Cool_Breeze 发表于 2022-7-27 15:33

还是分多少查询好一些,还是一次查询多次join好呢?

Atlantis908 发表于 2022-7-27 15:35

都是同一张表为什么要join这么多次?没看明白~

SELECT Route.name,f1.normal,f1.normal,f1.normal,f1.normal,f1.normal,f1.normal,f1.normal
FROM Route
join workStation f1 on Route.ST1 = workStation.idand Route.ST2 = f1.id and Route.ST3 = f1.id;

Piz.liu 发表于 2022-7-27 15:51

SELECT t1.name,t2.normal
FROM Route t1
join workStation t2 on t1.ST1 = t2.id or t1.ST2 = t2.id or t1.ST3 = t2.id or t1.ST4 = t2.id or t1.ST5 = t2.id or t1.ST6 = t2.id ort1.ST7 = t2.id

这样?

1521441710 发表于 2022-7-27 16:10

你这想法倒是挺奇怪的

wxk0248 发表于 2022-7-27 16:18

根据你的数据库类型,可以尝试下Route表先进行列转行,然后再join

一个瓜皮 发表于 2022-7-27 16:54

额,能看看表结构吗,你这个实例看着好怪哦{:301_1008:}

luby 发表于 2022-7-27 16:55

Piz.liu 发表于 2022-7-27 15:51
SELECT t1.name,t2.normal
FROM Route t1
join workStation t2 on t1.ST1 = t ...

这种如果 要取t2中的数据 怕就不行了

Cool_Breeze 发表于 2022-7-27 17:06

Atlantis908 发表于 2022-7-27 15:35
都是同一张表为什么要join这么多次?没看明白~

SELECT Route.name,f1.normal,f1.normal,f1.normal,f1.no ...

sqlite 好像不行,查询不了。

Piz.liu 发表于 2022-7-27 17:29

luby 发表于 2022-7-27 16:55
这种如果 要取t2中的数据 怕就不行了

这有啥不行 只要有关联就能取
页: [1] 2
查看完整版本: sql 一张表的字段存放的另一张表的ID,怎么查询出另一张表的所有数据?