我有桌子
+--------+-------+
| obs_id | name |
+--------+-------|
| 101 | mics |
| 102 | jan |
+--------+-------+
我有表监控
+--------+--------+---------+
| mon_id | obs_id | code_id |
+--------+--------+---------+
| 1 | 101 | 201 |
| 2 | 101 | 201 |
| 3 | 101 | 202 |
| 4 | 102 | 201 |
| 5 | 102 | 202 |
+--------+--------+---------+
我有表格代码
+--------+-----------+
|code_id | code_name |
+--------+-----------|
| 201 | node |
| 202 | java |
| 203 | c++ |
+--------+-----------+
查询结果
+--------+--------+---------+-----------+
| obs_id | name | code_id | code_name |
+--------+--------+---------+-----------+
| 101 | mics | 201 | node |
| 102 | jan | 201 | node |
+--------+--------+---------+-----------+
有人可以给我一个正确的mysql查询来提出我的结果。
select A.obs_id, A.name, M.code_id, C.code_name from obs as A
left join monitoring as M on M.obs_id = A.obs_id
left join code as C on C.code_id = M.code_id
我的查询返回超过2,或者不是我想要的结果。
答案 0 :(得分:0)
根据您的结果,它看起来只是想要“节点”的结果。 然后查询将如下所示:
CREATE PROCEDURE GETDATA
AS
@CodeId int=0
BEGIN
select DISTINCT A.obs_id, A.name, M.code_id, C.code_name from obs as A
left join monitoring as M on M.obs_id = A.obs_id
left join code as C on C.code_id = M.code_id WHERE c.code_id=@CodeId
END
现在,您只需将codeID传递给存储过程,它将返回基于CodeID的输出。它看起来很动态。
上述查询将根据您的需要提供结果。
如果您想获取所有代码的不同数据,请删除where条件。
谢谢。