聯合查詢 - 怎麼做?各位,
我們正在尋求您的幫助。 我們正在創建一個從多個表中提取數據的查詢(像往常一樣),但我們想在兩個主表之間進行聯合。 下面是我們的 SQL 查詢的示例。 我們如何使用查詢生成器來實現這一點? 到目前為止,我們可以只使用 UNION 語句之前查詢的第一部分來查詢數據庫。 我們已經閱讀了 JSL 書籍,但找不到我們想要的東西。 非常感謝您的幫助!
所以原始的 SQL 查詢看起來像這樣:
USE BLAH - 這是數據庫的名稱
(選擇
GENO.NAME 作為 [基因型],
GENO.PEDIGREE 作為 [PEDIGREE],
EXPMT.NAME 作為 [實驗],
LOC.NAME 作為 [位置],
TRAITS.NAME 作為 [TRAIT],
MEANS.YEAR AS [YEAR],
MEANS.AVG 作為 [數據]
來自 BLAH.dbo.MEANS
內部聯接廢話.dbo.GENO ON 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 MENS.YEAR IN ('2015','2016','2017'))
聯盟(
選擇
GENO.NAME 作為 [基因型],
GENO.PEDIGREE 作為 [PEDIGREE],
EXPMT.NAME 作為 [實驗],
LOC.NAME 作為 [位置],
TRAITS.NAME 作為 [TRAIT],
MEANS2.YEAR 作為 [YEAR],
MEANS2.AVG 作為 [數據]
從BLAH.dbo.MEANS2
內部聯接廢話.dbo.GENO ON 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'))
ORDER BY TRAITS.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 第 2 版創建的腳本的早期版本。
回复:聯合查詢 - 怎麼做?@anaheilman ,
我不清楚的是-當您說部分查詢有效時,這實際上沒有意義。 如果您有 2 個表 - “Means”和“Means2”,則可以使用 Join 函數執行等效的聯合。 如果您的 SQL 查詢已經執行聯合,那麼您應該能夠使用 Connect DataBase()
回复:聯合查詢 - 怎麼做?嗨,烏代,
我的查詢在聯合之前的第一部分 JMP 中有效。 我的問題是如何使用 JMP 語言將 Union 查詢放在一起,因為我們有兩個主表 Means 和 Means2。
謝謝你的幫助。 是回复:聯合查詢 - 怎麼做?@anaheilman ,
讓我們假設您有一個有效的 SQL 查詢,如果有,您應該能夠使用 Open Database() 將 JMP 連接到您的數據庫並提取您的 SQL 查詢的結果。
文件 ==> 腳本索引 ==> “打開數據庫”