Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ZQuery (https://www.delphipraxis.net/75582-zquery.html)

clock50 21. Aug 2006 22:18

Datenbank: mysql • Version: 5 • Zugriff über: zeos

ZQuery
 
Hallo, wie ist es möglich eine Abfrage wie z.B. [delphi]select * from testdb where testdb.nr = testdb2.nr

zu realisieren, ich bekomme immer die Meldung

[quote]SQL Error: Unknown table 'testdb2' in where clause.

Bernhard Geyer 21. Aug 2006 22:25

Re: ZQuery
 
Woher soll die Datenbank wissen was du mit testdb2 meinst. Eine Tabelle/Abfrage oder einen Alias-Namen:
SQL-Code:
select * from testdb inner join testdb2 on testdb.nr = testdb2.nr

clock50 22. Aug 2006 09:23

Re: ZQuery
 
Hallo, Danke erstmal aber diese Abfrage ergibt nicht das gewünschte Ergebnis. Nun etwas eindeutiger gefragt: Ich habe 2 Tabellen z.B testdb und testdb2 zu jedem Eintrag int testdb gibt es in testdb2 eine oder mehrere Positionen die ich in einem gesonderten dbgrid anzeigen lassen möchte. Also z.B. testdb Felder/Einträge

nr | datum
1 | 22.08.2006
2 | 23.08.2006

testdb2 Felder/Einträge

nr | fnr | fahrt | kilometer
1 | 1 | nach Hause | 10
2 | 1 | baden | 5
3 | 2 | nach Hause | 10

so nun brauche ich eine Abfrage die mir folgendes Ergebnis bringt:

nr | datum
1 | 22.08.2006

fnr | fahrt | kilometer
1 | nach Hause | 10
1 | baden | 5


in php würde ich schreiben: select * from testdb2 where testdb2.fnr = testdb.nr

aber wie schreibe ich das im ZQuery?

Jelly 22. Aug 2006 09:32

Re: ZQuery
 
Zitat:

Zitat von clock50
in php würde ich schreiben:
SQL-Code:
select * from testdb2 where testdb2.fnr = testdb.nr

Ganz sicher nicht.

Die Query hat nichts mit der Programmiersprache zu tun, sondern muss nur der Sprache SQL konform sein.

Bernhard hat Dir doch die Lösung geschrieben. Was stimmt denn daran nicht?

Übrigens... Eine Tabelle innerhalb einer Datenbank nennt man nicht testdb... auch nicht zu Testzwecken. Verwechselst Du nicht Tabelle mit Datenbank?

clock50 22. Aug 2006 10:12

Re: ZQuery
 
Die Lösung von Bernhard gibt mir alle daten von 'testdb2' aus.

Zitat:

Übrigens... Eine Tabelle innerhalb einer Datenbank nennt man nicht testdb... auch nicht zu Testzwecken. Verwechselst Du nicht Tabelle mit Datenbank?
DB und Tabele verwechsele ich bestimmt nicht. testdb und testdb2 sind Tabellen in einer Datenbank.

Ich bin dabei ein Programm auf mysql DB umzustellen von DBase. Da konnte ich die Tabellen(bei DBase Datenbanken) so verknüpfen, daß ich diese Auswahl angezeigt bekommen habe, dazu mußte man allerdings bei TTable MasterSource und MasterFields noch angeben und bei TQuery dazu noch

SQL-Code:
SELECT * FROM testdb2 WHERE (testdb2.fnr = : nr)
die Komponete weiß, das nr sich auf testdb.nr bezieht weil das in Mastersource und MasterFields angegeben ist.

Das gleiche Ergebnis brauche ich nun auch für ZQuery.

Danke

mkinzler 22. Aug 2006 10:21

Re: ZQuery
 
Auch im TQuery hast du aber keinen direkten Verweis uaf das Feld in der anderen Tabelle sondern ein Parameter, welcher mit dem Wert eines anderen DataSets bestückt wurde. Genauso kannst du es auch in Zeos machen.

Bernhard Geyer 22. Aug 2006 11:25

Re: ZQuery
 
Hier sieht man mal wieder wie fehlende und ungenaue Anageben des Fragestellers einen wieder in die falsche Richtung führen. Also das nächste mal genauer angeben was man eigentlich will (Hier das eine Datenmenge aufgrund der Navigation in einer anderen Datenmenge über einen Schlüsselwert aktualisiert werden soll.

Bora4d 8. Okt 2006 16:32

Re: ZQuery
 
Fall du immer noch brauchst:

SELECT t1.nr, t1.datum, t2.fnr, t2.fahrt, t2.kilometer FROM testtb t1, testdb2 t2 WHERE (t2.fnr=t1.fnr)

Liefert dir:

nr | datum | fnr | fahrt | kilometer
1 | 22.08.2006 | 1 | nach Hause | 10
1 | 22.08.2006 | 1 | baden | 5


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