Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Im SELECT mehrere Tabellen referenzieren? (https://www.delphipraxis.net/171622-im-select-mehrere-tabellen-referenzieren.html)

messie 15. Nov 2012 15:22

Datenbank: Firebird • Version: 2.5 • Zugriff über: ibdac

Im SELECT mehrere Tabellen referenzieren?
 
Ich baue gerade eine Ansicht aus mehreren Tabellen zusammen.

Ich möchte zu jedem untergeordneten Bauteil die übergeordnete Los- und Auftragsnummer anzeigen.


Code:
CREATE VIEW V_SERIAL_OVERVIEW
AS
select a.PUMP_SERIAL, a.STEP_COUNT from PUMPS a
union
select b.BATCH_ID, b.BATCH_SUBID, b.DRAWING_NO
from BATCHES b where b.ID = a.BATCH_ID // -->> Fehler, da Zugriff auf falsche Tabelle
union
select distinct c.INTERNAL_ORDER from INTERNAL_ORDER_NO c
where c.ID = b.ORDER_ID // -->> müsste hier auch auftreten
Jedes a hat die Spalte BATCH_ID.
Ich hatte versucht, mehrere where-Klauseln einzuklammern, das ging aber auch nicht.
Da ich beim suchen auch nicht auf ähnliche Probleme stoße scheint es ein falscher Ansatz zu sein.

Grüße, Messie

DeddyH 15. Nov 2012 15:25

AW: Im SELECT mehrere Tabellen referenzieren?
 
Hast Du evtl. UNIONS mit JOINS verwechselt? Wie sind die Tabellen denn miteinander verknüpft?

messie 15. Nov 2012 15:33

AW: Im SELECT mehrere Tabellen referenzieren?
 
Zitat:

Zitat von DeddyH (Beitrag 1191350)
Hast Du evtl. UNIONS mit JOINS verwechselt? Wie sind die Tabellen denn miteinander verknüpft?

Tabelle Bauteil (hier Extruderpumpen) enthält die ID vom übergeordneten Los, dieses die ID vom Auftrag.
Das Union erscheint mir bisher logisch, da ich in einer Zeile die Seriennummern der Pumen mit den jeweiligen Los- und Auftragsinformationen anzeigen möchte.

Könnte ich den Zugriff auf eine andere Tabelle mit einem weiteren SELECT in Klammern umsetzen?

Grüße, Messie

DeddyH 15. Nov 2012 15:39

AW: Im SELECT mehrere Tabellen referenzieren?
 
Müsste es dann nicht ungefähr so lauten?
SQL-Code:
SELECT
  A.ID, B.ID, C.ID
FROM
  Bauteil A
JOIN
  Los B ON B.ID = A.Los_ID
JOIN
  Auftrag C ON C.ID = B.Auftrag_ID
Vermutlich sind aber nicht die IDs on Interesse, sondern die Bezeichner, Losnummern, Auftragsnummern etc., Du müsstest also die SELECT-Felder entsprechend anpassen.

p80286 15. Nov 2012 17:11

AW: Im SELECT mehrere Tabellen referenzieren?
 
Code:
CREATE VIEW V_SERIAL_OVERVIEW
AS
select Pumps.PUMP_SERIAL
      ,pumps.STEP_COUNT
      ,Batches.Batches_SubID
      ,Batches.Drawing_No
      ,Internal_Order_No.Internal_Order
from Pumps
    ,Batches
    ,Internal_Order_No
where Pumps.Batch_ID=Batches.Batch_ID
  and Batches.Order_ID=Internal_Order_No.ID
Ich denke so sollte es gehen, ggf. so ändern:

Code:
where Pumps.Batch_ID=Batches.Batch_ID(+)
  and Batches.Order_ID=Internal_Order_No.ID(+)
(ist Oracle Syntax!)

Gruß
K-H

DeddyH 15. Nov 2012 17:14

AW: Im SELECT mehrere Tabellen referenzieren?
 
Wobei das ja auch nur JOINS sind, allerdings in anderer Syntax ;)

messie 16. Nov 2012 08:15

AW: Im SELECT mehrere Tabellen referenzieren?
 
Moin,

hat super geklappt :thumb:

Mir war nicht klar, dass ich die Tabellen hinter dem FROM zusammenfassen muss.
Liegt vielleicht auch daran, dass die a.x, b.x wie Variablen aussehen, was sie ja nicht sind.

Grüße, Messie


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:19 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