需求

使用 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;

参考