Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Subquery (https://www.delphipraxis.net/151114-subquery.html)

khh 6. Mai 2010 09:55

Datenbank: Firebird • Version: 2.1 • Zugriff über: zeos

Subquery
 
hallo zusammen,
mit:
SQL-Code:
select * from artprod p , artikel a
where p.artikel_id =a.artikel_id
order by p.lieferdatum desc;
fülle ich ein db-grid
nun lässt das Grid aber Änderungen nur zu, wenn die Daten aus einer einzigen Tabelle stammen.
Ich hab irgendwo gelesen dass es auch mit inner- oder outer-join funktionieren soll ;-)

Leider kenn ich mich da in der (relativ neuen) Syntax nicht aus, da wir bisher alles über Subquerys umgesetzt haben.

Danke für eure Hilfe.

Gruss KHH

mkinzler 6. Mai 2010 10:05

Re: Subquery
 
Ein impliziter Join ist immer ein Inner Join
SQL-Code:
select
    a*, p.*
from
    artprod p
        join artikel a on a.artikel_id =p.artikel_id
order by
    p.lieferdatum desc;

joachimd 6. Mai 2010 10:36

Re: Subquery
 
Zitat:

Zitat von khh
SQL-Code:
select * from artprod p , artikel a
where p.artikel_id =a.artikel_id
order by p.lieferdatum desc;
fülle ich ein db-grid
nun lässt das Grid aber Änderungen nur zu, wenn die Daten aus einer einzigen Tabelle stammen.
Ich hab irgendwo gelesen dass es auch mit inner- oder outer-join funktionieren soll ;-)
H

ob's in Lazarus geht, weiß ich nicht ... aber in Delphi würde ich in diesem Fall Lookup-Felder nehmen.

khh 6. Mai 2010 10:46

Re: Subquery
 
Zitat:

Zitat von joachimd
Zitat:

Zitat von khh
SQL-Code:
select * from artprod p , artikel a
where p.artikel_id =a.artikel_id
order by p.lieferdatum desc;
fülle ich ein db-grid
nun lässt das Grid aber Änderungen nur zu, wenn die Daten aus einer einzigen Tabelle stammen.
Ich hab irgendwo gelesen dass es auch mit inner- oder outer-join funktionieren soll ;-)
H

ob's in Lazarus geht, weiß ich nicht ... aber in Delphi würde ich in diesem Fall Lookup-Felder nehmen.


die query mit dem join funktioniert zwar richtig um das Grid zu füllen, ein Ändern ist aber leider auch so nicht möglich.

---Cannot update a complex query with more then one table--

muss ich mir die Sache mit den Lookupfeldern wohl mal ansehen :-(

mkinzler 6. Mai 2010 11:04

Re: Subquery
 
Hast du es mal mit einem UpdateObjekt versucht?

khh 6. Mai 2010 11:25

Re: Subquery
 
Zitat:

Zitat von mkinzler
Hast du es mal mit einem UpdateObjekt versucht?

nee, gibts dazu wo ein Beispiel?

borwin 6. Mai 2010 11:34

Re: Subquery
 
Welche Werte von welcher Tabelle werden denn geändert?
Du brauchst ja für jeder Tabelle ein eigenes Update.
In der Komponente kann nur ein Update angesprochen werden.
Wenn alles in einen Rutsch gehen soll, brauchst Du eine SP in der DB.
Der übergibst Du alle Parameter und die führt dann die Updates nacheinander aus.

Gruß Borwin

khh 6. Mai 2010 11:37

Re: Subquery
 
Zitat:

Zitat von borwin
Welche Werte von welcher Tabelle werden denn geändert?
Du brauchst ja für jeder Tabelle ein eigenes Update.
In der Komponente kann nur ein Update angesprochen werden.
Wenn alles in einen Rutsch gehen soll, brauchst Du eine SP in der DB.
Der übergibst Du alle Parameter und die führt dann die Updates nacheinander aus.

Gruß Borwin

geändert werden soll ein Feld in der Haupttabelle,
heisst aus der Subquery brauch ich nur die Artikelnummer und -bezeichnung zur Anzeige im Grid.

rapante 6. Mai 2010 11:49

Re: Subquery
 
Wenn du Zeos nutzt, kannst du TZUpdateSQL verwenden.

Einfach auf die Form packen und in der Query bei UpdateObject auswählen.
Die Kompo besitzt auch einen UpdateSQl-Editor. Da kannst du dir bequem deine
Statements zusammen klickern.

khh 6. Mai 2010 11:52

Re: Subquery
 
Zitat:

Zitat von rapante
Wenn du Zeos nutzt, kannst du TZUpdateSQL verwenden.

Einfach auf die Form packen und in der Query bei UpdateObject auswählen.
Die Kompo besitzt auch einen UpdateSQl-Editor. Da kannst du dir bequem deine
Statements zusammen klickern.

ja das versuch ich gerade
nach dem schema
SQL-Code:
update artprot set menge = ???
aber wie bekomme ich den Bezug zu dem geänderten feld?


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:13 Uhr.
Seite 1 von 2  1 2      

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