AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Subselect in Where mit mehreren Ergebnisfeldern im IN-Operator
Thema durchsuchen
Ansicht
Themen-Optionen

Subselect in Where mit mehreren Ergebnisfeldern im IN-Operator

Ein Thema von Jumpy · begonnen am 6. Feb 2014 · letzter Beitrag vom 6. Feb 2014
Antwort Antwort
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.737 Beiträge
 
Delphi 6 Enterprise
 
#1

Subselect in Where mit mehreren Ergebnisfeldern im IN-Operator

  Alt 6. Feb 2014, 13:57
Datenbank: egal • Version: egal • Zugriff über: egal
Hallo,

nur aus Neugier. Gibt es so ein Konstrukt:

Code:
Select
  A.*
From
  TabelleA A
Where
  A.Nummer, A.Tag IN (Select Nr, Tag From TabelleB)
Irgendwie dachte ich ich hätte das schon mal gesehen gehabt. Hab es aber bei Oracle nicht ans laufen gekriegt und das durch einen Right Join gelöst, aber die Neugier ist geblieben:

Code:
Select
  A.*
From
  TabelleA A
Right Join
 (Select Nr, Tag From TabelleB) B
On A.Nummer=B.NR
And A.Tag = B.Tag
Ralph
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Subselect in Where mit mehreren Ergebnisfeldern im IN-Operator

  Alt 6. Feb 2014, 14:26
Nottfals über

 ... A.Nummer || A.Tag IN (Select Nr || Tag From TabelleB)
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#3

AW: Subselect in Where mit mehreren Ergebnisfeldern im IN-Operator

  Alt 6. Feb 2014, 14:33
Ist das nicht ein stinknormaler INNER JOIN?
SQL-Code:
SELECT
  A.*
FROM
  TabelleA A
JOIN
  TabelleB B ON B.Nr = A.Nummer AND B.Tag = A.Tag
oder meinetwegen auch
SQL-Code:
SELECT
  A.*
FROM
  TabelleA A
WHERE EXISTS (
  SELECT
    *
  FROM
    TabelleB B
  WHERE
    B.Nr = A.Nummer
  AND
    B.Tag = A.Tag
)
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.737 Beiträge
 
Delphi 6 Enterprise
 
#4

AW: Subselect in Where mit mehreren Ergebnisfeldern im IN-Operator

  Alt 6. Feb 2014, 14:37
Nottfals über

 ... A.Nummer || A.Tag IN (Select Nr || Tag From TabelleB)
Stimmt das geht natürlich.
Ralph
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.737 Beiträge
 
Delphi 6 Enterprise
 
#5

AW: Subselect in Where mit mehreren Ergebnisfeldern im IN-Operator

  Alt 6. Feb 2014, 14:39
Ist das nicht ein stinknormaler INNER JOIN?
Aua. Du hast ja recht.

Mein Right Join funktioniert ja nur weil in A zu jeder NR und Tag Datensätze vorhanden sind.
Ist das mal nicht der Fall, müsste ich ja leere Datensätze bekommen.

Irgendwie hab ich da zu kompliziert gedacht.
Ralph
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#6

AW: Subselect in Where mit mehreren Ergebnisfeldern im IN-Operator

  Alt 6. Feb 2014, 15:19
Ja, gibt es, es fehlt nur die Klammerung auf der linken Seite.
Hab das auch mal irgendwo benutzt, aber weiß nicht mehr warum.

Code:
Select
  A.*
From
  TabelleA A
Where
  (A.Nummer, A.Tag) IN (Select Nr, Tag From TabelleB)
Es wäre zu vermuten, dass ggf. vorhandene Indices hier besser greifen als in der Version mit Konkatenierung. Macht auch mehr Spaß bei nicht String Typen wie Date ...
Gruß, Jo

Geändert von jobo ( 6. Feb 2014 um 15:21 Uhr) Grund: PS: Ich verwende das bei generierten SQLStatements mit mehrfachem Primärschlüssel
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.737 Beiträge
 
Delphi 6 Enterprise
 
#7

AW: Subselect in Where mit mehreren Ergebnisfeldern im IN-Operator

  Alt 6. Feb 2014, 16:07
Jepp, das war's. Wobei ich die Version mit dem Inner Join jetzt erstmal drin lasse.
Später mach ich dann mal einen Performance-Test, wenn ich richtige Daten habe.

Edit: Ganz vergessen: Danke euch allen!
Ralph
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Subselect in Where mit mehreren Ergebnisfeldern im IN-Operator

  Alt 6. Feb 2014, 16:10
Zitat:
Es wäre zu vermuten, dass ggf. vorhandene Indices hier besser greifen als in der Version mit Konkatenierung.
Das wird definitv so sein, wenn man nicht einen entsprechenden expression index erzeugt.
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz