| Autor |
Beitrag |
Jakob Schöttl
      
Beiträge: 929
Erhaltene Danke: 1
Delphi 7 Professional
|
Verfasst: Do 13.12.07 17:46
Hi,
die Syntax von SQL könnte ja so aussehen:
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
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: 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 
      
Beiträge: 929
Erhaltene Danke: 1
Delphi 7 Professional
|
Verfasst: 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
      
Beiträge: 779
Erhaltene Danke: 1
Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
|
Verfasst: 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 
      
Beiträge: 929
Erhaltene Danke: 1
Delphi 7 Professional
|
Verfasst: 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?
SQL-Anweisung 1: 2:
| SELECT Name,Anzahl FROM artikel, lagerbestand WHERE (anzahl>0) AND (artikel.id=lagerbestand.ArtikelID) |
|
|
ene
      
Beiträge: 779
Erhaltene Danke: 1
Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
|
Verfasst: 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 
      
Beiträge: 929
Erhaltene Danke: 1
Delphi 7 Professional
|
Verfasst: 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:
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 SQL-Anweisung 1:
| c:\db\db1.db.nichteindeutigerfeldname |
|
|
MAlsleben
      
Beiträge: 303
W2k,WinXP
D3 - DXE3 Enterprise
|
Verfasst: Sa 15.12.07 22:57
Hi,
müsste so gehen:
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 
      
Beiträge: 929
Erhaltene Danke: 1
Delphi 7 Professional
|
Verfasst: Sa 15.12.07 23:28
ah, das geht, so weit! Vielen Dank MAlsleben...
|
|