Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SELECT INTO mit BDE (https://www.delphipraxis.net/4340-select-into-mit-bde.html)

mjenke 25. Apr 2003 10:16


SELECT INTO mit BDE
 
Hallo, alle miteinander!

Ich habe folgendes Problem: Ich will die Daten zweier Tabellen in einer Tabelle zusammenfassen. Dies will ich mit einem SQL-Statement hinkriegen. Dabei müssen die Spaltennamen (die in den beiden Ausgangstabellen gleich lauten) auf neue Spaltennamen abgebildet werden.
Als Beispiel: Tabelle1.Name wird zu TabelleNeu.Name1, Tabelle2.Name wird zu TabelleNeu.Name2.

Mit MicrosoftJetSQL gibt es das SELECT INTO-Statement. Wenn ich das mit der BDE versuche, klappt es nicht. Das INTO stört die BDE. Dieses INTO wäre aber genau das, was ich brauche...

Dies ist die Abfrage, wie sie im Augenblick aussieht - und leider mit der BDE nicht funktioniert...

Code:
SELECT t1.Name As Name1, t1.Vorname AS Vorname1, t2.Name AS Name2, t2.Vorname AS Vorname2
INTO zusammenfassung
FROM test t1 INNER JOIN
testII t2 ON (t1.Note1 = t2.Note1)
Vielleicht kann mir damit jemand aushelfen?

:D
Vielen Dank schonmal,
Matthias

MrSpock 25. Apr 2003 10:36

Hallo mjenke,

das geht mit INSERT:

Delphi-Quellcode:
INSERT INTO tabelle
   SELECT ...

mjenke 25. Apr 2003 10:59

Bingo, Mr. Spock!!!

Mit folgender Query klappt es tatsächlich

Code:
INSERT INTO zusammenfassung (Name1,Vorname1,Name2,Vorname2)
SELECT t1.Name, t1.Vorname, t2.Name, t2.Vorname FROM
test t1 INNER JOIN testII t2 ON (t1.Note1 = t2.Note1)
Vielen Dank!

:D
Matthias

MrSpock 25. Apr 2003 11:06

Hallo mjenke,

freut mich, dass es gleich funktioniert hat.

Ich meine man kann sogar die Klammer mit den vier Feldern weglassen.

r_kerber 25. Apr 2003 11:37

Hallo Matthias, hallo MrSpock,

wenn ich nativ auf Informix zugreife funktioniert bei mir auch:
SQL-Code:
select spalten
FROM tabelle
where Bedingung1
and bedingung2
...
into Temp tmp_vtr_vorg;
Es kann also nicht an der BDE liegen. Welches DBS wird verwendet und wie erfolgt der Zugriff (ODBC, nativ, ADO)?

MrSpock 25. Apr 2003 12:08

Hallo r_kerber,

das liegt daran, dass der Umfang von lokal SQL eingeschränkt ist. Bei Informix hast du den vollen SQL Umfang zur Verfügung.

r_kerber 25. Apr 2003 12:19

Zitat:

Zitat von MrSpock
das liegt daran, dass der Umfang von lokal SQL eingeschränkt ist.

Ist schon klar, deshalb die Frage nach der Datenbank. Wenn ich über die BDE nativ auf Informix zugreife, dann habe ich nicht die Beschränkungen der lokalen SQL. Die gelten meines Wissens ja nur beim Zugriff auf Paradox und dBase.
Wie es bei ODBC über BDE aussieht, weiß ich nicht.

Seven 13. Feb 2004 11:52

Re: SELECT INTO mit BDE
 
Hallo zusammen,
das hier klappt prima bei Informix

Zitat:

wenn ich nativ auf Informix zugreife funktioniert bei mir auch:
Source:
select spalten
FROM tabelle
where Bedingung1
and bedingung2
...
into Temp tmp_vtr_vorg;
Meine Frage ist jetzt, wie kann ich mit dem Ergebnis aus tmp_vtr_vorg weitersuchen?

select a.spalte1, b.spalte1
from tabelle1 a, tmp_vtr_vorg b
where a.spalte2=b.spalte2

Beim probieren mault das Prg immer, das es tmp_vtr_vorg nicht gibt.

Über den SQL-Explorer klappt es aber.
*Vermutungein*
beim SQL-Explorer bleibt die tmp Tabelle offen. Bei Delphi wird sie wohl mit jeder neuen Query geschlossen.
*Vermutungaus*

MrSpock 13. Feb 2004 12:20

Re: SELECT INTO mit BDE
 
Hallo Seven,

das könnte an der Transaktionskontrolle liegen. Du musst die erste Transaktion mit COMMIT abschließen. Der Zugriff auf tmp_vtr_vorg könnte dann mit einer neuen Transaktion gestartet werden, dabei ist evtl. wichtig, dass die Transaktion alle bereits mit COMMIT abgeschlossenen Transaktionen berücksichtigt und nicht mit einem Snapshot arbeitet.

Seven 13. Feb 2004 13:23

Re: SELECT INTO mit BDE
 
Hallo MrSpock,

erstmal Danke für die antwort. Lider klappt das nicht so wie beschrieben, oder ich mache etwas falsch. Ich greife über die BDE mittels ODBC-Treiber auf eine Informix 7.3 Datenbank zu. Können Sie ein paar weitere Angaben mache, wie ich es umsetzen kann auf eine temporäre Tabelle zuzugreifen.

Danke im voraus

Robert_G 13. Feb 2004 13:31

Re: SELECT INTO mit BDE
 
Kann es sein, dass die Inhallte einer temp. Tabelle nur für die aktuelle Session sichtbar sind?

[Edit]akuter Fall von Wurstfingergetippe :wall:[/Edit]


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