Autor Beitrag
Jakob Schöttl
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 929
Erhaltene Danke: 1


Delphi 7 Professional
BeitragVerfasst: Do 13.12.07 17:46 
Hi,

die Syntax von SQL könnte ja so aussehen:

ausblenden SQL-Anweisung
1:
SELECT * FROM <table1>,<table2> ...					


Geht das auch bei der TQuery-Komponente, weil die ja eigentlich immer nur einer Datenquellenkomponente zugeordnet ist. Oder kann man da auch mehrere Tabellen hinter FROM angeben?

Danke schon mal!
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Do 13.12.07 18:58 
Ja, obwohl das eher vom verwendeten DBMS abhängt. Aber sogar Paradox kennt JOIN. Der oben genannte implizite Join sollte mit allen DBMS gehen.

_________________
Markus Kinzler.
Jakob Schöttl Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 929
Erhaltene Danke: 1


Delphi 7 Professional
BeitragVerfasst: Fr 14.12.07 11:16 
aber welche Tabellen muss ich denn dann angeben?

(ich nehme ttParadox)

Query ist ja nur mit einer DataSource verbunden und die DataSource ist nur mit einer Table verbunden... wie kann er dann mehrere Tabellen kennen?

Ich will hald ungefähr so was machen (ganz unten)
ene
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 779
Erhaltene Danke: 1

Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
BeitragVerfasst: Fr 14.12.07 11:23 
Hi,

die beiden Tabellen, die du abfragen willst. Auch muss man kein INNER JOIN, um ein INNER JOIN zu erreichen, bzw können diese auch zu Perfomaceverlusten führen. Was willst du denn erreichen und wie ist der Datenaufbau?

_________________
Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.
Jakob Schöttl Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 929
Erhaltene Danke: 1


Delphi 7 Professional
BeitragVerfasst: Fr 14.12.07 13:50 
sagen wir, ich will aus einer Tabelle "Artikel" und aus einer Tabelle "Lagerbestand" (Haupt-/Detailbeziehung) die Felder "Artikel.Name" und "Lagerbestand.Anzahl" auswählen, wo die "Lagerbestand.Anzahl" > 0.

und ich habe eine Query.

Wie muss dann die Abfrage sein, die ich Query.SQL zuweise?
so vllt?
ausblenden SQL-Anweisung
1:
2:
SELECT Name,Anzahl FROM artikel, lagerbestand WHERE (anzahl>0) AND
(artikel.id=lagerbestand.ArtikelID)
ene
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 779
Erhaltene Danke: 1

Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
BeitragVerfasst: Fr 14.12.07 14:01 
So sollte das aussehen, wobei Name immer eine ganz schlechte Feldbezeichnung ist ;)

_________________
Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.
Jakob Schöttl Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 929
Erhaltene Danke: 1


Delphi 7 Professional
BeitragVerfasst: Sa 15.12.07 22:04 
Aha!!! Jetzt sehe ich endlich, dass TQuery auch ohne einer DataSource und nur mit SQL-Quelltext funktioniert!

ok, aber wie gebe ich die Namen der Datenbanken in dem SQL-Code an?
"c:\db\db1.db" und "c:\db\db2.db"

die Abfrage sieht dann so aus:
ausblenden SQL-Anweisung
1:
SELECT * FROM "c:\db\db1.db", "c:\db\db2.db" WHERE ?					


gibt es noch eine andere möglichkeit?

weil wenn ich jetzt auf Nicht-eindeutige Felder zugreifen will (hinter WHERE) dann müsste ich ja schreiben
ausblenden SQL-Anweisung
1:
c:\db\db1.db.nichteindeutigerfeldname					
MAlsleben
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 303

W2k,WinXP
D3 - DXE3 Enterprise
BeitragVerfasst: Sa 15.12.07 22:57 
Hi,

müsste so gehen:

ausblenden SQL-Anweisung
1:
Select a.Name, b.Anzahl from Tabelle1 a, Tabelle2 b where a.id=b.id2					



Gruss Micha

_________________
Viele Wege führen nach Rom.
Jakob Schöttl Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 929
Erhaltene Danke: 1


Delphi 7 Professional
BeitragVerfasst: Sa 15.12.07 23:28 
ah, das geht, so weit! Vielen Dank MAlsleben...