Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   sql mehrere abfragen hintereinander aber wie? (https://www.delphipraxis.net/69352-sql-mehrere-abfragen-hintereinander-aber-wie.html)

polondo 14. Mai 2006 09:25


sql mehrere abfragen hintereinander aber wie?
 
hi,

ich möchte gerne folgendes in ein query objekt packen:

SQL-Code:
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'output_view' AND type = 'V')
BEGIN
  DROP VIEW [output_view]
END

IF EXISTS (SELECT name FROM sysobjects WHERE name = 'search_result_view' AND type = 'V')
BEGIN
  DROP VIEW [search_result_view]
END

create view search_result_view as
SELECT productgroup.description as productgroup, manufacturer.name as manufacturer, product.name, product.art_no, product.size, product.unit,
product.cas_no, product.minrange, product.maxrange, product.measureunit,prod_id from productgroup, manufacturer, product
WHERE product.prdgrp_id = productgroup.prdgrp_id
AND product.man_id = manufacturer.man_id

create view output_view as select product.prod_id,sum(quantity) as quantity
from invoicepos,product
where invoicepos.prod_id = product.prod_id
and product.prod_id IN (select prod_id from search_result_view)
group by product.prod_id

select search_result_view.*,o.quantity from search_result_view
left join output_view o on search_result_view.prod_id = o.prod_id
order by search_result_view.prod_id
wie trenne ich nun diese einzelnen schritte voneinander ohne für jedes eine eigene query auszuführen?
das heißt das alles in eine query soll. ich habe schon versucht jede abfrage einzuklammern aber das nimmt er auch nicht an.
weiß einer weiter?

mfg R.

mkinzler 14. Mai 2006 09:32

Re: sql mehrere abfragen hintereinander aber wie?
 
Eine Query-Komponenet dient nur dazu ein einzelnes Statement auszuführen, willst du mehrere Statements ausführen mußt du eine andere Komponente nehmen. Ich vermute mal, das du mit mssql über die Ado-Komponenten (dbGo) arbeitest. Hier heißt sie TADOCommand.

polondo 14. Mai 2006 09:38

Re: sql mehrere abfragen hintereinander aber wie?
 
erstmal danke für die antwort!
du hast recht ich arbeite mit der adoquery. allerdings wundert mich das was du sagst, denn bisher habe ich es auch geschafft mehrere insert hintereinander oder aber einen insert und direkt danach eine update über einen einzelne query-komponente auszuführen. :gruebel:
das einzigste wobei der eben ärger macht ist der create befehl bei dem er diesen immer an erster stelle sehen will. ich kann mich daran erinnern das es in mysql zumindest die möglichkeit gab die einzelnen abfragen über runde klammern voneinander zu trennen. :warn:


hmm ich werd ma schauen was ich da über das tadocommand finde.

mfg R.

mkinzler 14. Mai 2006 09:44

Re: sql mehrere abfragen hintereinander aber wie?
 
Mit Ado kenn ich mich nicht so aus. Aber bei den anderen Kompontenensammlungen wird immer zwischen Einzel- (Query) und mehfach-Statements unterschieden.

Jelly 14. Mai 2006 09:56

Re: sql mehrere abfragen hintereinander aber wie?
 
Für Normal werden SQL Befehle auch irgendwie abgeschlossen, ähnlich wie bei Delphi. Bei MySQL ist das in der Regel sogar ebenfalls das Semicolon.

polondo 14. Mai 2006 10:33

Re: sql mehrere abfragen hintereinander aber wie?
 
das semikolon hab ich auch schon versucht .. will der aber trotzdem nicht voneinander trennen. hmm keine ahnung woran das liegt

Jelly 14. Mai 2006 11:48

Re: sql mehrere abfragen hintereinander aber wie?
 
Mit welcher Komponente schickst Du denn die Befehle zum Server. Versuch mal die Zeos Komponenten, da gibts sowas wie TZBatchSQL. Ansonsten bleibt Dir wohl nix anderes übrig als jeden einzelnen Befehl einzeln zum Server zu schicken.

DP-Maintenance 14. Mai 2006 12:49

DP-Maintenance
 
Dieses Thema wurde von "SirThornberry" von "Programmieren allgemein" nach "Datenbanken" verschoben.

alzaimar 14. Mai 2006 13:07

Re: sql mehrere abfragen hintereinander aber wie?
 
Ich setze Kommandos (bis ca. 1000 Zeichen) mit der Methode Execute - Methode der TADOConnection ab. Jeder Befehl in eine neue Zeile, aber einzelne Befehle kann man auch strukturieren:
SQL-Code:
Select Foobar,
       BlaFasel
From SomeBoo
Insert Into Foo
  Select 1,2
Create Procedure MyProc
  @Param int
as
if (@Param = 1)
  select .....
Die CreateViews müssen aber mit 'GO' abgeschlossen werden, wenn danach noch etwas kommen soll. Das musst Du mal ausprobieren. Ich erzeuge jedenfalls komplette Views-Sammlungen auf diese Weise: Alle Befehle in ein Stringgrid, und wenn es mehr als 1000 Zeichen sind, dann die Befehlssammlung einfach per Execute abschicken. Warum diese Grenze ist, weiss ich nicht. Es nervt zwar ein wenig, aber da man die Execute's sowieso in einer TADOConnection-Transaktion kapseln sollte, macht das nichts.

polondo 14. Mai 2006 22:29

Re: sql mehrere abfragen hintereinander aber wie?
 
kannst du mir bitte sagen wie das mit dem GO zum abschließen der view gehen soll? ich habe versucht eine einzige view sowohl mit tadoquery als auch tadocommand auszuführen ... bei beidem kommt allerdings die fehlermeldung "kein resultset" :cry:

kann da eina helfen? :?

schon ma danke!
mfg R.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:12 Uhr.
Seite 1 von 2  1 2      

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 by Thomas Breitkreuz