![]() |
Datenbank: Firebird • Version: 2.0 • Zugriff über: Console
Select über 3 Tabellen
Hi, ich bin auf der suche, wie ich sowas am besten per SQL-Select Abfrage lösen kann, das einzige was mir einfallen würde wäre eine Distinct mit Full outer join, aber glaube nicht, das das Performance mäßig vertretbar wäre.
Gibt es da noch "normale" SQL Mittel oder brauche ich da Stored PRcoedures bzw. muß ich da den Code in Delphi schreiben?
Code:
Resultat
Tabelle1
ITEM1 ITEM5 ITEM7 Tabelle2 ITEM1 ITEM2 ITEM3 Tabelle3 ITEM1 ITEM3 ITEM8 ITEM9
Code:
_______T1 T2 T3
ITEM1 1 1 1 ITEM2 0 1 0 ITEM3 0 1 1 ITEM5 1 0 0 ITEM7 1 0 0 ITEM8 0 0 1 ITEM9 0 0 1 |
Re: Select über 3 Tabellen
was hast du an inner joins auszusetzen ?
Code:
ansonsten könntest du ja auch alle 3 tables einzeln abfragen und die results dann in nem thread extra bearbeiten lassen wobei das auf das gleiche hinaus kommen würde.
SELECT * FROM table1 (INNER JOIN table2 on table2.field = table1.field) INNER JOIN table3 ON table3.field = table2.field WHERE 1
Mit freundlichen Grüßen p0w3r5tr34m3r |
Re: Select über 3 Tabellen
Hallo,
die einzige Möglichkeit die ich per SQL hierfür sehe ist tatsächlich mit join zu arbeiten. Aber das ist doch ein ganz normaler SQL-Vorgang, also warum sollte man den nicht nutzen? ;) |
Re: Select über 3 Tabellen
... weil es mit einem inner join NICHT funktionieren kann ...
da ich eine anweisung brauche, die alle Elemenete aus der Tabelle1 und zusätzlich dann alle elemente aus Tabelle2 und zusätzlich alle Elemente aus Tabelle3 brauche ein inner join gibt ja nur die elemente, die in allen 3 vorhanden sind, das sind bei meinem beispiel oben gerade mal 0! ein full outer join über alle 3 tabellen braucht ... keine ahnung auf jeden fall so lange, das man die SQL Console per Prozess beenden rauskickt. aber ich glaube, ich hab schon mal meine lösung :
SQL-Code:
[edit] ... hatte einfach übersehen, das der FB2.0 jetzt ja diese SELECT aus SELECT kann
select bezeichnung, max(t1), max(t2), max(t3)
from (select tab1.bezeichnung, 1 as t1, 0 as t2, 0 as t3 from tab1 tab1 union select tab2.bezeichnung, 0 as t1, 1 as t2, 0 as t3 from tab2 tab2 union select tab3.bezeichnung, 0 as t1, 0 as t2, 1 as t3 from retour tab3) group by bezeichnung |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz