Mysql 选择左侧具有一对多关系的行
我有桌子Mysql 选择左侧具有一对多关系的行,mysql,sql,Mysql,Sql,我有桌子 +--------+-------+ | obs_id | name | +--------+-------| | 101 | mics | | 102 | jan | +--------+-------+ 我有桌子监控 +--------+--------+---------+ | mon_id | obs_id | code_id | +--------+--------+---------+ | 1 | 101 | 201 | |
+--------+-------+
| 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,或者结果不是我想要的 根据您的结果,您似乎只想查看“节点”的结果。 然后查询将如下所示:
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条件
谢谢。根据您的结果,您似乎只想查看“节点”的结果。 然后查询将如下所示:
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条件
谢谢。为什么忽略java代码?请注意,在这种情况下,mon_id是多余的。您在(obs_id,code_id)上有一个完全可用的自然键,这意味着代理是不必要的。为什么要忽略java代码?请注意,在这种情况下,mon_id是多余的。你有一个完全可用的自然钥匙(obs_id,code_id),这意味着不需要代理。不,先生。它将不仅返回代码\名称节点。它是动态的,它保护代码id的用途。嗨,Mics,你可以使用存储过程进行动态行为。请检查我的答案。我在另一个查询中没有使用存储过程。没有,先生。它将不仅返回代码\名称节点。它是动态的,它保护代码id的用途。您好,您可以使用存储过程进行动态行为。请检查我的答案。我在其他查询中没有使用存储过程。