AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird: SQL JOIN gesucht

Ein Thema von MyRealName · begonnen am 1. Nov 2023 · letzter Beitrag vom 5. Nov 2023
Antwort Antwort
Seite 2 von 2     12   
Delphi.Narium

Registriert seit: 27. Nov 2017
2.418 Beiträge
 
Delphi 7 Professional
 
#11

AW: Firebird: SQL JOIN gesucht

  Alt 2. Nov 2023, 13:54
SQL-Code:
Select T1.*,T2.*
From T1
Left Join T2 On 1=1
Where T1.Feld1='Irgendwas'
Geht in Firebird auch.
  Mit Zitat antworten Zitat
Benutzerbild von Sinspin
Sinspin

Registriert seit: 15. Sep 2008
Ort: Dubai
618 Beiträge
 
Delphi 10.3 Rio
 
#12

AW: Firebird: SQL JOIN gesucht

  Alt 2. Nov 2023, 14:13
Wenn man beide Tabellen bedingungslos zusammenführen will mag das eine Lösung sein.
Aber es geht ja schon um eine Beziehung zwischen beiden Tabellen. Nur das diese bisher nicht via Index Feld gelößt ist. Sondern ein Flag in einem Feld abgelegt ist dessen Wert festlegt welche Sätze aus der anderen Tabelle gebraucht werden.
Stefan
Nur die Besten sterben jung
A constant is a constant until it change.
  Mit Zitat antworten Zitat
Jumpy
Online

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

AW: Firebird: SQL JOIN gesucht

  Alt 2. Nov 2023, 14:23
Aber es geht ja schon um eine Beziehung zwischen beiden Tabellen. Nur das diese bisher nicht via Index Feld gelößt ist. Sondern ein Flag in einem Feld abgelegt ist dessen Wert festlegt welche Sätze aus der anderen Tabelle gebraucht werden.
Das steht ausser Frage. Eine Zwischentabelle zum Abbilden einer n:m-Beziehung ist auf jeden Fall der bessere Weg.
Mir ging es nur darum zu Erfahren, was der Cross Join anders mach (in der Situation) als der Left Join und ob ich beim Left Join auch das von IBExpert beschriebene Problem habe, dass erst so ein riesiges Kreuzprodukt aufgebaut wird, bevor die Where-Bedingungen greifen, oder ob das die Datenbank dann schon optimieren kann und erst mal die Datensätze nimmt, die laut Where Bedingung aus Tabelle T1 kommen bevor dann das Ganze T2 dazu gejoined wird.
Ralph
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.418 Beiträge
 
Delphi 7 Professional
 
#14

AW: Firebird: SQL JOIN gesucht

  Alt 2. Nov 2023, 14:48
Zu Oraclezeiten (20+ Jahre her) hätte meine Lösung dann eher so ausgesehen:
SQL-Code:
select T1a.*,T2.*
from (select * from T1 where T1.Feld1 = 'Irgendwas') T1a
Left Join T2 On 1=1
Erst in einem Select maximal einschränken und dann das Ergebnis dieser Einschränkung mit den anderen Tabellen joinen.

(Hat manchen Tag Laufzeit in Produktivsystemen eingespart).
  Mit Zitat antworten Zitat
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
673 Beiträge
 
Delphi 10.4 Sydney
 
#15

AW: Firebird: SQL JOIN gesucht

  Alt 5. Nov 2023, 11:04
Das Einschränken würde ja über einen CTE auch funktionieren, welche Firebird unterstützt. Wie gesagt, beid er einen Tabelle geht es um max. 10 Einträge.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.015 Beiträge
 
Delphi 12 Athens
 
#16

AW: Firebird: SQL JOIN gesucht

  Alt 5. Nov 2023, 13:13
Ich versuche es mal so zu formulieren, wie ich es verstanden habe:
  • Es gibt nur einen Kunden (der für den es die Datenbank überhaupt gibt)
  • Es gibt mehrere Lieferadressen
  • Es gibt keine Einschränkung der Lieferaddressen für ein Property

Die im ersten Post gezeigte Query listet also jedes Property genau so viel mal auf wie es Lieferadressen gibt. Also in der Art:
Property1, Lieferadresse1
Property1, Lieferadresse2
Property1, Lieferadresse3
...
Property2, Lieferadresse1
Property2, Lieferadresse2
Property2, Lieferadresse3
...
Property3, Lieferadresse1
Property3, Lieferadresse2
Property3, Lieferadresse3
...
Dann brauchst du auch keine weiteren Maßnahmen ergreifen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 13:17 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