Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi In View Tabellen unterscheiden (https://www.delphipraxis.net/13080-view-tabellen-unterscheiden.html)

Cobra 10. Dez 2003 15:17


In View Tabellen unterscheiden
 
Hallo @all,

habe mich jetzt ihr http://www.delphipraxis.net/viewtopi...=105851#105851 für einen View entschieden.
( nur das ich nicht alles nochmal erklären muss :) )

Also in dem View will ich jetzt mehr als eine Spalte (mit UNION) aus zwei Tabellen aufnehmen.
Wie kann ich es machen, dass ich bei jedem Datensatz aus dem View unterscheiden kann ob dieser aus der ersten oder aus der zweiten Tabelle kommt.

:coder:

Funky-Sepp 10. Dez 2003 15:26

Re: In View Tabellen unterscheiden
 
Beispiel:

SQL-Code:

  Select ID, ( Cast ("KUNDEN") as Varchar( 50 ) ) as Tabellenname from Kunden
  Union
  Select ID, ( Cast ("LIEFERANTEN) as Varchar( 50 ) ) as Tabellenname from Lieferanten

Cobra 10. Dez 2003 16:08

Re: In View Tabellen unterscheiden
 
Hallo Funky-Sepp,

Danke!!!! :thuimb:

Irgendwie sehe ich heute den Wald vor lauter Bäumen nicht. :wall:

Funky-Sepp 10. Dez 2003 16:15

Re: In View Tabellen unterscheiden
 
Bitte :-D

:wall: <-- ist das nicht etwas zu schmerzhaft?

Cobra 10. Dez 2003 16:20

Re: In View Tabellen unterscheiden
 
Ok habe mich beruhigt :dancer2: und Kaffee geholt und jetzt gehts weiter. :coder:


:cheers: Funky-Sepp

Cobra 11. Dez 2003 14:44

Re: In View Tabellen unterscheiden
 
@ Funky-Sepp und auch alle anderen

SQL-Code:
  Select ID, ( Cast ("KUNDEN") as Varchar( 50 ) ) as Tabellenname from Kunden
  Union
  Select ID, ( Cast ("LIEFERANTEN) as Varchar( 50 ) ) as Tabellenname from Lieferanten
das funktioniert nicht bei mir der Fehler kommt beim Cast.

Das geht:
SQL-Code:
  Select SBatchNo,'Faults ' as Tabelle from Log_Faults
  Union all
  Select SBatchNo,'Actions' as Tabelle from Log_GxP_Actions
:gruebel: Aber wie bekomme ich das mit dem Cast hin, denn das mit dem zusätzlichen Leerzeichen bei Faults ist nicht die schönste Lösung.

Info: Ich benutze Interbase 6.01 und die IBX-Komponenten für den Zugriff.

Robert_G 11. Dez 2003 14:49

Re: In View Tabellen unterscheiden
 
Wozu die Leerzeichen?
Bei mir klappt sowas auch ohne Cast oder alle Strings auf gleiche Länge zu schreiben.

Cobra 11. Dez 2003 14:57

Re: In View Tabellen unterscheiden
 
Interbase Fehlermeldung aus Marathon :wall: ( da komme ich nicht gegen an )

ISC ERROR CODE:335544569

ISC ERROR MESSAGE:
Dynamic SQL Error
SQL error code = -104
Invalid command
Data type unknown

:gruebel:
bei bei der zuvor benannten SQL ohne das Leerzeichnen SQL Dialect 1, denn Dialect 3 kann ich nicht benutzen.

Funky-Sepp 11. Dez 2003 18:49

Re: In View Tabellen unterscheiden
 
Hi Cobra.

Hat ein bisschen länger gedauert.

Aber ich glaub du kannst keinen Cast bei einem View in Interbase machen,
aber die Felder müssen gleichlang sein.

Also ist deine Lösung gar nicht schlecht. Ich glaube des geht auch nicht anders.
Wie's bei Oracle aussieht weiß ich leider nicht, da ich noch nie mit Oracle gearbeitet habe.

SQL-Code:
  Select ID, ( Cast ("KUNDEN") as Varchar( 50 ) ) as Tabellenname from Kunden
  Union
  Select ID, ( Cast ("LIEFERANTEN) as Varchar( 50 ) ) as Tabellenname from Lieferanten
Aber vielleicht geht's ja mit der neuen Interbase Firebird??
Hab die leider grad nicht zur hand.

mfg

Wolfgang

Cobra 12. Dez 2003 10:25

Re: In View Tabellen unterscheiden
 
Hallo Funky-Sepp

Habe jetzt den View zusammen und es ´funktioniert alles wunderbar. 8) :thuimb:


Hier mal die kleine SQL dazu :lol:
SQL-Code:
  Select A.PK_Log_Faults as PK ,A.SBatchNo,A.DTTimeStamp,A.SProductName,'F+' as Tabelle,
  B.SDescription1,E.SUser_Name1,E.SUser_Name2
  from Log_Faults A
  Join Faults B on A.IFK_Faults = B.PK_Faults AND A.Bogekommen = 'T'
  Join Log_Faults_ACK E on A.PK_LOG_Faults = E.IFK_LOG_Faults AND E.bosuccess = 'T'
  Union all
  Select A.PK_Log_Faults as PK,A.SBatchNo,A.DTTimeStamp,A.SProductName,'F-' as Tabelle,
  B.SDescription1,E.SUser_Name1,E.SUser_Name2 from Log_Faults A
  Join Faults B on A.IFK_Faults = B.PK_Faults AND A.Bogekommen = 'F'
  Join Log_Faults_ACK E on A.PK_LOG_Faults = E.IFK_LOG_Faults AND E.bosuccess = 'T'
  union all
  Select C.PK_Log_GxP_Actions as PK,C.SBatchNo,C.DTTimestamp,C.SProductName,' A' as Tabelle,
  D.SDescription1,C.SUser_Name1, C.SUser_Name2 from Log_GxP_Actions C
  Join GXP_Actions D on C.IFK_GXP_Actions = D.PK_GxP_Actions
:dancer: :dancer2:


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