SQL abfrage mehrerer Daten in Eingabeaufforderung

Hi,
habe folgendes Problem wie kriege ich es hin mehrere Artikelnummer abzufragen.
Habe bis jetzt diese abfrage, damit kann ich einen Artikel abfragen.
Ist das mit einer Schleife möglich(Syntax?)…

SELECT a.artikelnr,SUM (a.menge_soll) Summe_Soll,a.zustand,b.bez
FROM wa_pos a, zust_typ b, wa_kopf c
WHERE a.zustand=b.typ and a.auftragsnr=c.auftragsnr
AND a.artikelnr = <\CArtikelnummer>
AND a.zustand<60
AND c.auftragsnr not matches ‘K*’
and c.auftragsnr not matches ‘V*’
GROUP BY a.artikelnr,a.zustand,b.bez;

danke für die Hilfe

where artikelnr in (1,2,3)

Andreas

danke
aber die Artikel sind jedesmal unterschiedlich deswegen brauche ich eine Eingabeaufforderung in die ich mehrere Artikel eingeben kann.

Was meinst du mit “Eingabeaufforderung”?

Bei meiner Abfrage geht ein Fenster auf, in das ich eine Artikelnummer eingeben kann, aber halt nur eine.

Das dachte ich mir … aber du verwechselst da etwas: das Abfragen von Daten ist Aufgabe deiner Anwendung.
Diese stellt dann die fertig formatierten Anfragen an die Datenbank.

Die Datenbank ist nicht dafür da, ihre Arbeit zwischendurch zu unterbrechen und nach Benutzereingaben zu fragen, dann ggf. unendlich lange zu warten und die ganzen Fehlerfälle (Abbruch der Eingabe, falsche Eingabe (keine Zahl), SQL-Injections, Abbruch der Datenbankverbindung, …) auch noch zu managen.

Mein SQL funktioniert ja soweit.
ich will halt nicht nur einen Artikel abfragen sondern mehrere auf einmal.
Bei einen funktioniert es ja.
Fenster geht auf ich gebe meinen Artikel ein und kriege mein gewünschtes Ergebnis.

Ja, da öffnet sich nicht nur ein Fenster, sondern ein ganzes Scheunentor :wink:

Im Ernst: schau Dir die Antwort von ads noch mal an und erkundige Dich, was “SQL-Injection” bedeutet, und was ein Client-Server-System für Rollentrennungen hat.


Andreas

Ok,bin ein SQL Anfänger.
Und eure Antworten übersteigen mein wissen.
Nochmal für doofe.
Ist es jetzt nun möglich oder nicht eine Abfrage herzustellen in der sich die Anzahl der abzufragende Artikel ändert und größer 1 ist?

Ja, natürlich:

test=# select v,d from foo where v in (5,22,33);
 v  |     d
----+------------
  5 | 2010-06-01
 22 | 2010-01-03
 33 | 2010-01-05
(3 rows)

Aber das sagte ich schon eher, daß es so geht.


Andreas

Das hatte ich verstanden.

Aber nochmal zu meinem SQL.
So wie du es machst, müsste ich ja jedesmal im Quelltext die Artikel ändern und dies ist ja etwas unpraktisch.
deswegen suche ich eine elegante Lösung:-)

Ja,
das ist eine Möglichkeit aber keine elegante.
Ich muss jedesmal wenn die Artikel sich ändern in den Quelltext und die dort eingeben und das ist nicht Praktisch wie ihr zugeben müsst.
Ich bin auf der Suche es eleganter zu machen.
Vielleicht hat jemand eine Idee. So wie ich es oben gemacht habe funktioniert es ja elegant nur halt für nur einen Artikel.

danke

Was hast Du “oben” eigentlich gemacht? Läuft das in psql, oder wie arbeitest Du?


Andreas

Es ist kein vollwertiges Psql, aber in der Art ähnlich.

Okay. An dieser Stelle ein Zitat von ads aus diesem Thread:

“das Abfragen von Daten ist Aufgabe deiner Anwendung.
Diese stellt dann die fertig formatierten Anfragen an die Datenbank.”


Damit ist eigentlich alles gesagt. Das beinhaltet dann auch so Dinge wie Schutz vor SQL-Injection.

Andreas

Selbstverständlich geht das. Aber das ist Aufgabe des Frontends das zu tun. Man kann das dort z.B. über ein Multiselect-Listenfeld oder ein Texteingabefeld realisieren und dessen Inhalt so aufbereiten, das es in das o.g. SQL-Statment passt. Aber wie schon erwähnt: SQL-Injection beachten.

Gruß Uwe

pgAdminIII hat 'nen grafischen Abfragegenerator. Vielleicht hilft der dir ja…