![]() |
Datenbank: Firebird • Version: 2.6 • Zugriff über: Dataset
SQL, eine Ansicht aus zwei verschienen Tabellen
Hallo,
möchte gerne in einer DBTable eine Auftragsübersicht für eine Produktionsmaschine, aus 2 verschiedenen Tabellen, darstellen. Es gibt in diesen Tabellen Felder mit gleichen Name, die jedoch wenig miteinander zu tun haben. Es müsste dann eine 'select from Table1 and/or from Table2' sein mit jeweils einem 'where' für jede Table. Könnte mir Jemand, bitte, einen Ansatz geben? Danke und Gruß, Luckner |
AW: SQL, eine Ansicht aus zwei verschienen Tabellen
Hallo,
Select T1.Id,T1.Name,T2.Name, T2.Tab1Id From Tabelle1 T1 Join Tabelle2 T2 On T1.Id=T2.Tab1Id T1 und T2 sind Tabellenaliase Das Feld Tab1Id in Tabelle2 ist der Foreign Key auf das Feld Id von Tabelle1 |
AW: SQL, eine Ansicht aus zwei verschienen Tabellen
Es ist nicht ganz klar, ob du einen JOIN oder eine UNION brauchst. Kannst du dein Problem an einem konkreten Beispiel genauer beschreiben?
|
AW: SQL, eine Ansicht aus zwei verschienen Tabellen
Ich glaub er meint JOIN.
JOIN ... beide Tabellen nebeneinander (Felder aneinandergehängt) UNION ... beide Tabellen untereinander (Datensätze aneinandergehängt) Wenn Felder gleich heißen und du willst beide im Ergebnis/Record haben, dann mußt du eben einen der Beiden umbenennen.
SQL-Code:
SELECT t1.aaa, t2.aaa AS bbb FROM ...
Siehe hoika: das geht bei vielen DBMS und DB-Komponenten, wobei dort die DB das umbenennt. (z.B. "_1" an den doppelten Namen anhängen) Aber besser ist es meistens, wenn du es umbenennst, dann weißt du auch immer wie es heißt, unabhängig davon, wie das DBMS solche Probleme löst. Und du willst doch bestimmt auch eine DBQuery-Komponente und keine DBTable-Komponente verwenden |
AW: SQL, eine Ansicht aus zwei verschienen Tabellen
An einer Maschine werden Aufträge von 2 verschiedenen Auftragstabellen erstellt. Der Maschineneinrichte möchte eine tabellarische übersicht haben über die gesamten Aufträge für diese Maschine. Also ich glaube, dass 'UNION' das Richtige wäre. Tabelle2 hat keine Gemeinsamkeiten mit Tabelle1. Ausser, dass die Felder gleich lauten:
Luckner |
AW: SQL, eine Ansicht aus zwei verschienen Tabellen
Ich verwende DBQuery.
|
AW: SQL, eine Ansicht aus zwei verschienen Tabellen
OK, dann Union.
Du baust dir das SELECT für die erste Tabelle, Dann nochmal ein SELECT für die zweite Tabelle. * wie die Felder heißen ist egal * hier müssen aber die Typen der Felder denen der Ersten gleichen/kompatibel sein UND die Anzahl der Felder muß übereinstimmen dann UNION dazwischen
SQL-Code:
Willst du andere Feldnamen, dann im ersten/oberen SELECT mit AS umbenennen
SELECT aaa, bbb FROM t1 WHERE ...
UNION SELECT aaa, ccc FROM t2 WHERE ... Das Ergebnis hat die Namen und Typen des ersten SELECTs. |
AW: SQL, eine Ansicht aus zwei verschienen Tabellen
Möchtest Du alle Daten aus beiden Tabellen anzeigen, dann ist UNION ALL Deine Wahl.
|
AW: SQL, eine Ansicht aus zwei verschienen Tabellen
Hallo,
bei Union All würde ich aufpassen, was der Kunde will (Duplicates ja/nein) ![]() Beim Union würde ich das noch so machen Select * From ( Select Tab1 Union Select Tab2 ) Order by Datum/Uhrzeit Du musst nur höllisch aufpassen, weil Du ja mit einer inoffziellen Firebird-Version arbeitest (2.6) ;) |
AW: SQL, eine Ansicht aus zwei verschienen Tabellen
Also wenn es Daten von 2 verschiedenen Auftägen sind oder überhaupt wenn es eine Übersicht für einen Menschen ist, der sich persönlich einen Überblick verschaffen möchte, würde ich ein UNION ALL nehmen. Man will da sicher keinen impliziten Dublettenabgleich haben.
Wenn wirklich zufällig etwas identisch sein sollte, kann es mit etwas Glück (passende Sortierung) noch auffallen. Um ganz sicher zu gehen, dass es KEINE Vermischung gibt, kann man folgendes machen: select 'xy' as Auftragsquelle, xy.* from tabellexy xy union all select 'ab' as Auftragsquelle, ab.* from tabelleab ab Das Ergebnis nach Bedarf sortieren und vor allem auch das generierte Feld "Auftragsquelle" immer mit ausgeben, bei jedem Report! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:53 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 by Thomas Breitkreuz