UNION QUERY – WIE GEHT ES?Verehrte Gäste,
Wir suchen Ihre Hilfe. Wir erstellen eine Abfrage, die die Daten aus mehreren Tabellen extrahiert (wie üblich), aber wir möchten eine Union zwischen zwei Primärtabellen erstellen. Ein Beispiel dafür, wie unsere SQL-Abfrage aussieht, finden Sie unten. Wie können wir dies mit dem Query Builder erreichen? Bisher können wir die Datenbank nur mit dem ersten Teil der Abfrage vor der UNION-Anweisung abfragen. Wir haben die JSL-Bücher gelesen, konnten aber nicht finden, wonach wir suchen. Deine Hilfe wird hoch geschätzt!
Die ursprüngliche SQL-Abfrage sieht also etwa so aus:
VERWENDEN SIE BLAH – das ist der Name der DB
(WÄHLEN
GENO.NAME ALS [GENOTYP],
GENO.STAMMBAUM ALS [STAMMBAUM],
EXPMT.NAME ALS [EXPERIMENT],
LOC.NAME AS [STANDORT],
EIGENSCHAFTEN.NAME ALS [EIGENSCHAFT],
BEDEUTET.JAHR ALS [JAHR],
BEDEUTET.AVG ALS [DATEN]
VON BLAH.dbo.MEANS
INNERE VERBINDUNG BLAH .dbo.GENO ON GENO.ID=MEANS.ENT1
INNERE VERBINDUNG BLAH .dbo.EXPMT ON EXPMT.ID=MEANS.EXPT
INNERE VERBINDUNG BLAH .dbo.LOC ON LOC.ID=EXPMT.LOC
INNERE VERBINDUNG BLAH .dbo.TRAITS ON MERKMALE.ID=MEANS.MERKMAL
WO GENO.NAME IN ('a', 'b', 'c')
UND EIGENSCHAFTEN.NAME = 'ERTRAG'
AND LOC.NAME = 'FARGO'
UND BEDEUTET. JAHR IN ('2015', '2016', '2017'))
UNION(
WÄHLEN
GENO.NAME ALS [GENOTYP],
GENO.STAMMBAUM ALS [STAMMBAUM],
EXPMT.NAME ALS [EXPERIMENT],
LOC.NAME AS [STANDORT],
EIGENSCHAFTEN.NAME ALS [EIGENSCHAFT],
BEDEUTET2.JAHR ALS [JAHR],
BEDEUTET2.AVG AS [DATEN]
AUS BLAH.dbo.MEANS2
INNERE VERBINDUNG BLAH .dbo.GENO ON GENO.ID=MEANS2.ENT1
INNERE VERBINDUNG BLAH .dbo.EXPMT ON EXPMT.ID=MEANS2.EXPT
INNERE VERBINDUNG BLAH .dbo.LOC ON LOC.ID=EXPMT.LOC
INNERE VERBINDUNG BLAH .dbo.TRAITS ON MERKMALE.ID=MEANS2.TRAIT
WO GENO.NAME IN ('a', 'b', 'c')
UND EIGENSCHAFTEN.NAME = 'ALPHA_AMYLASE'
AND LOC.NAME = 'FARGO'
UND BEDEUTET 2. JAHR IN ('2015', '2016', '2017'))
NACH EIGENSCHAFTEN BESTELLEN.TBFLD_NAME
Betreff: UNION QUERY - WIE GEHT ES?Vielen Dank für Ihre Hilfe. Ich werde Ihren Empfehlungen folgen und Sie informieren, wenn ich auf Probleme stoße.
Ich wünsche ihnen einen wunderbaren Tag! BIN
Betreff: UNION QUERY - WIE GEHT ES?Es gibt zwei mir bekannte Möglichkeiten:
- Führen Sie zwei Abfragen aus und verketten Sie die beiden resultierenden Tabellen mit JSL.dt1 << Verketten (dt2);
- Verwenden Sie die benutzerdefinierte Abfrage „Neue SQL-Abfrage“.
Unten ist ein Beispiel *. Es findet alle Instanzen, in denen name in den 2 Tabellen übereinstimmt oder in Tabelle #1 (t1) name leer (null) ist.Dies ist nicht Ihr Szenario, da JMP-Tabellen verwendet werden, aber es zeigt, dass Sie Ihre SQL-Anweisung in einem CustomSQL() verwenden können.
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
Ich bin sicher, dass es in diesem Blog viele SQL-Experten gibt (ich bin kein Experte), die eine bessere Lösung bieten könnten.
*Es ist eine frühe Version eines Skripts, das für JSL Companion, 2nd Ed, erstellt wurde.
Betreff: UNION QUERY - WIE GEHT ES?@anaheilmann ,
Was mir nicht klar ist, ist - wenn Sie sagen, dass ein Teil der Abfrage funktioniert, macht das keinen Sinn. Wenn Sie 2 Tabellen haben – „Means“ und „Means2“, können Sie die Join-Funktion verwenden, um das Äquivalent der Union auszuführen. Wenn Ihre SQL-Abfrage die Vereinigung bereits durchführt, sollten Sie nur Connect DataBase() verwenden können.
Betreff: UNION QUERY - WIE GEHT ES?Hallo Uday,
Meine Abfrage funktioniert in JMP, dem ersten Teil vor der Vereinigung. Meine Frage ist, wie man die Union-Abfrage mit der JMP-Sprache zusammenstellt, da wir zwei Primärtabellen Means und Means2 haben.
Vielen Dank für Ihre Hilfe. BINBetreff: UNION QUERY - WIE GEHT ES?@anaheilman ,
Nehmen wir an, Sie haben eine funktionierende SQL-Abfrage. Wenn ja, sollten Sie in der Lage sein, Open Database() zu verwenden, um JMP mit Ihrer Datenbank zu verbinden und die Ergebnisse Ihrer SQL-Abfrage abzurufen.
Datei ==> Scripting Index ==> "Datenbank öffnen"