联合查询 - 怎么做?各位,
我们正在寻求您的帮助。 我们正在创建一个从多个表中提取数据的查询(像往常一样),但我们想在两个主表之间进行联合。 下面是我们的 SQL 查询的示例。 我们如何使用查询生成器实现这一点? 到目前为止,我们只能使用 UNION 语句之前的查询的第一部分来查询数据库。 我们已经阅读了 JSL 书籍,但找不到我们要找的东西。 非常感谢您的帮助!
所以原始的 SQL 查询看起来像这样:
USE BLAH——这是数据库的名称
(选择
基因名称为[基因型],
GENO.PEDIGREE 作为 [PEDIGREE],
EXPMT.NAME AS [实验],
LOC.NAME 作为 [LOCATION],
性状名称为[性状],
MEANS.YEAR 作为 [YEAR],
MEANS.AVG AS [数据]
来自 BLAH.dbo.MEANS
内部联接废话.dbo.GENO 上 GENO.ID=MEANS.ENT1
内部联接废话.dbo.EXPMT ON EXPMT.ID=MEANS.EXPT
内部联接废话.dbo.LOC ON LOC.ID=EXPMT.LOC
内部联接废话.dbo.TRAITS ON TRAITS.ID=MEANS.TRAIT
WHERE GENO.NAME IN ('a', 'b', 'c')
AND TRAITS.NAME = 'YIELD'
AND LOC.NAME = 'FARGO'
AND MEANS.YEAR IN ('2015','2016','2017'))
联盟(
选择
基因名称为[基因型],
GENO.PEDIGREE 作为 [PEDIGREE],
EXPMT.NAME AS [实验],
LOC.NAME 作为 [LOCATION],
性状名称为[性状],
MEANS2.YEAR AS [YEAR],
MEANS2.AVG 为 [数据]
从BLAH.dbo.MEANS2
内部联接废话.dbo.GENO 上 GENO.ID=MEANS2.ENT1
内部联接废话.dbo.EXPMT ON EXPMT.ID=MEANS2.EXPT
内部联接废话.dbo.LOC ON LOC.ID=EXPMT.LOC
内部联接废话.dbo.TRAITS ON TRAITS.ID=MEANS2.TRAIT
WHERE GENO.NAME IN ('a', 'b', 'c')
AND TRAITS.NAME = 'ALPHA_AMYLASE'
AND LOC.NAME = 'FARGO'
AND MEANS2.YEAR IN ('2015','2016','2017'))
按性状排序。TBFLD_NAME
回复:联合查询 - 怎么做?感谢大家的帮助。 我会遵循您的建议,如果遇到任何问题,请告知您。
祝你有美好的一天! 是
回复:联合查询 - 怎么做?我知道有两种选择:
- 运行两个查询并使用 JSL 连接两个结果表。dt1 << 连接(dt2);
- 使用新的 SQL 查询自定义查询。
下面是一个例子*。 它会查找 2 个表中名称匹配或表 #1 (t1) 中名称为空 (null) 的所有实例。这不是您的场景,因为这是使用 JMP 表,但它表明您可以在 CustomSQL() 中使用 SQL 语句。
New SQL Query(
Version( 130 ),
Connection( "JMP" ),
JMP Tables(
["Big Class Joins Table1" =>
"C:\temp\JSLC2_working\scripts\Big Class Joins Table1.jmp",
"Grade Level Joins Table2" =>
"C:\temp\JSLC2_working\scripts\Grade Level Joins Table2.jmp"]
),
QueryName( "SQLQuery1" ),
CustomSQL(
"SELECT t1.name, t1.age, t2.name AS \!"name 2\!", t2.\!"grade level\!"
FROM \!"Big Class Joins Table1\!" t1
LEFT OUTER JOIN \!"Grade Level Joins Table2\!" t2
ON ( t1.name = t2.name )
UNION ALL
SELECT t1.name, t1.age, t2.name AS \!"name 2\!", t2.\!"grade level\!"
FROM \!"Grade Level Joins Table2\!" t2
LEFT OUTER JOIN \!"Big Class Joins Table1\!" t1
ON ( t2.name = t1.name )
WHERE t1.name IS NULL
"
)
) << Run
我相信这个博客有很多 SQL 专家(我不是专家),他们可能会提供更好的解决方案。
*这是为 JSL Companion 第二版创建的脚本的早期版本。
回复:联合查询 - 怎么做?@anaheilman ,
我不清楚的是——当你说查询的一部分有效时,那真的没有意义。 如果您有 2 个表 - “Means”和“Means2”,您可以使用 Join 函数来执行等效的并集。 如果您的 SQL 查询已经执行联合,那么您应该能够使用 Connect DataBase()
回复:联合查询 - 怎么做?嗨,乌代,
我的查询在联合之前的第一部分 JMP 中有效。 我的问题是如何使用 JMP 语言将 Union 查询放在一起,因为我们有两个主表 Means 和 Means2。
感谢您的帮助。 是回复:联合查询 - 怎么做?@anaheilman ,
让我们假设您有一个有效的 SQL 查询,如果可以,您应该能够使用 Open Database() 将 JMP 连接到您的数据库并提取 SQL 查询的结果。
文件 ==> 脚本索引 ==> “打开数据库”