AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Select über 3 Tabellen
Thema durchsuchen
Ansicht
Themen-Optionen

Select über 3 Tabellen

Ein Thema von Gruber_Hans_12345 · begonnen am 17. Jan 2007 · letzter Beitrag vom 17. Jan 2007
Antwort Antwort
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#1

Select über 3 Tabellen

  Alt 17. Jan 2007, 10:33
Datenbank: Firebird • Version: 2.0 • Zugriff über: Console
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:
Tabelle1
ITEM1
ITEM5
ITEM7

Tabelle2
ITEM1
ITEM2
ITEM3


Tabelle3
ITEM1
ITEM3
ITEM8
ITEM9
Resultat
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
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Benutzerbild von p0w3r5tr34m3r
p0w3r5tr34m3r

Registriert seit: 18. Aug 2003
Ort: Monheim am Rhein
153 Beiträge
 
RAD-Studio 2009 Pro
 
#2

Re: Select über 3 Tabellen

  Alt 17. Jan 2007, 11:52
was hast du an inner joins auszusetzen ?

Code:
SELECT * FROM table1 (INNER JOIN table2 on table2.field = table1.field) INNER JOIN table3 ON table3.field = table2.field WHERE 1
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.

Mit freundlichen Grüßen
p0w3r5tr34m3r
Florian Cülter
ich bin ein notorischer alles-klein-schreiber!

der 100. Beitrag nach 3 Jahren 25 Wochen und einem Tag
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Select über 3 Tabellen

  Alt 17. Jan 2007, 12:00
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?
Ansgar
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Select über 3 Tabellen

  Alt 17. Jan 2007, 12:12
... 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:
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
[edit] ... hatte einfach übersehen, das der FB2.0 jetzt ja diese SELECT aus SELECT kann
Gruss Hans

2B or not 2B, that is FF
  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 04:25 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