需求
使用 mysql,建立了多张表,表之间使用外键进行关联,现在需要通过视图进行多表联查。
多表内容
reagent
key_id | project | type |
---|---|---|
1 | coag | gbact |
itemrange
key_id | fk_reagent | item |
---|---|---|
1 | 1 | act |
2 | 1 | cr |
3 | 1 | pf |
filereportdata
key_id | fk_item | value | strip |
---|---|---|---|
1 | 2 | 1.1 | sid01 |
2 | 1 | 2.2 | sid02 |
3 | 3 | 3.3 | sid03 |
多表关系
filereportdata.fk_item
=itemrange.key_id
itemrange.fk_reagent
=reagent.key_id
期望结果
strip | project | type | item | value |
---|---|---|---|---|
sid01 | coag | gbact | cr | 1.1 |
sid02 | coag | gbact | act | 2.2 |
sid03 | coag | gbact | pf | 3.3 |
解决
多表查询
SELECT f.`strip`, f.`value`, i.`item`, r.`project`, r.`type`
FROM filereportdata AS f, itemrange AS i, reagent AS r
WHERE f.`fk_item` = i.`key_id` AND i.`fk_reagent` = r.`key_id`
上面的语句就可以查询出期望的结果。
视图
希望通过视图的方式来进行查询。
在创建视图的时候创建:
CREATE VIEW `new_view` AS
SELECT f.`strip`, f.`value`, i.`item`, r.`project`, r.`type`
FROM filereportdata AS f, itemrange AS i, reagent AS r
WHERE f.`fk_item`= i.`key_id` AND i.`fk_reagent` = r.`key_id`;
然后使用的时候就简单了:
SELECT * FROM new_view;