【问题标题】:How to feed search output from one query as a value to another query如何将一个查询的搜索输出作为值提供给另一个查询
【发布时间】:2016-04-13 22:50:35
【问题描述】:

假设一个教室数据库。它有两个表(stuDB 和 regDB):

  • stuDB 包含列 age、dob、rollnum。 rollnum 是分配给每个学生的唯一数字(1 到 100),其余属性(年龄、出生日期)不是唯一的。 搜索查询1: Select age, DOB, rollnum from db1.stuDB where age='x'

  • regDB 包含学生姓名、父亲姓名、regno。请注意,regno 是唯一的数字,等于每个学生的 rollnum。即所有学生的 regno=rollnum。 搜索查询2: 从 db1.regDB 中选择父亲姓名、母亲姓名、子女年龄、regno,其中 regno='1'

我首先运行query1,确定rollnum的值,将rollnum的结果作为regno手动输入query2。因此,我必须为每个学生手动运行查询 2。

我想以某种方式合并这两个查询并将结果显示为单个搜索结果,显示所有这些:studentname,fathername,regno,fathername,mothername,childage,regno搜索条件年龄=8。

换句话说,构建 query1 的结果,将 rollnum 的结果作为 regno 输入 query2 并显示两个查询的组合结果。

可以吗?我不了解 SQL,所以在这里需要一些帮助。

提示: 可以使用以下方法连接这两个查询:

SELECT * FROM (Select age, DOB, rollnum from db1.stuDB where age='x') CROSS JOIN (Select parentname, mothername, childage, regno from db1.regDB where regno='1 ')。不知何故,我想将此查询前半部分的 rollnum 输出作为 regno 提供给后半部分自动查询。

【问题讨论】:

  • 作为建议,您应该使用直观的名称来调用您的对象。例如。 stuDB 是一个表(不是数据库),也许可以称为学生(假设它存储的是什么)
  • Can that be done?。是的,它可以 - 请发布 show create table stuDB 的输出(对于 regDB 也是如此)一些示例数据和所需的输出
  • 感谢大家的回复。我使用 Join On 让它工作了。

标签: mysql sql


【解决方案1】:

它是这样解决的:

SELECT 年龄、出生日期、rollnum、父亲姓名、母亲姓名、孩子年龄、regno 来自 db1.stuDB 加入 db1.regDB ON db1.regDB.regno = rollnum 哪里(年龄='x')

*WHERE() 可以是我希望使用的任何搜索条件。

感谢 amdixon。当然,这只是一个例子。我的实际数据库完全不同,与学校无关。

【讨论】:

  • 一般来说,它有助于其他人能够复制您的问题(使用示例数据、结构等)。很好地解决了这个问题
猜你喜欢
  • 1970-01-01
  • 2021-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多