AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

query anpassen, geht das ?

Ein Thema von khh · begonnen am 14. Jul 2010 · letzter Beitrag vom 14. Jul 2010
Antwort Antwort
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#1

query anpassen, geht das ?

  Alt 14. Jul 2010, 11:27
Datenbank: firebird • Version: 2.1 • Zugriff über: zeos
hallo zusammen,

ich habe eine query :
hier auf die relevanten Felder gekürzt
SQL-Code:

select p.liefermenge as liefermenge,
 art.bezeichnung1, vklieferung_id
 from vkaufkopf as a,
 vkaufpos as p,
 artikel as art
 where a.vkaufkopf_id = p.vkaufkopf_id
 and p.art_id = art.artikel_id
 order by a.lieferdatum,kunden_id, artikel_id,vklieferung_id;

die mir folgendes Ergebnis liefert:
Code:
LIEFERMENGE   BEZEICHNUNG1   VKLIEFERUNG_ID
200   Brötchen                  1
500   Brötchen                  2
300   Brötchen                  3
8   Brezel                          3
50   Bauernbrot 750g                  2
50   Bauernbrot 750g                  4
8   Bauernbrot 1,5kg          1
8   Bisquitböden                  2
5   Aprikosenstreusel/Blech          1
gibts ne möglichkeit per SQL die Daten so zusammnzufassen, dass in dem Beispiel die ersten 3 Zeilen als eine Zeile zurückgegeben werden?

Oder muss ich das programtechnisch lösen?

Danke für eure Ideen.

8 Aprikosenstreusel/Blech 4
5 Baguettebrötchen 4
Karl-Heinz

Geändert von mkinzler (14. Jul 2010 um 11:37 Uhr) Grund: Code-Tag durch SQL-Tag ersetzt
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: query anpassen, geht das ?

  Alt 14. Jul 2010, 11:41
Ja, nennt man Gruppierung:
SQL-Code:
select
    sum(p.liefermenge) as liefermenge,
    art.bezeichnung
 from
    vkaufkopf as a,
    vkaufpos as p,
    artikel as art
 where
    a.vkaufkopf_id = p.vkaufkopf_id
    and p.art_id = art.artikel_id
 order by
    a.lieferdatum,kunden_id, artikel_id,vklieferung_id
group by
    art.bezeichnung;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.079 Beiträge
 
Delphi 12 Athens
 
#3

AW: query anpassen, geht das ?

  Alt 14. Jul 2010, 11:42
GROUP BY

Das würde aber mit der VKLIEFERUNG_ID Probleme geben, also diese kannst du dann nicht mehr richtig ausgeben, da sie sich ja unterscheiden.


[edit]
Och menn, wo kommt denn MK plötzlich her?
(da weiß man endlich och mal was und dann )
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#4

AW: query anpassen, geht das ?

  Alt 14. Jul 2010, 12:41
group by kenn ich schon
bring aber nicht das gewünschte Ergebnis
ich brauchs so:

brötchen Lieferung1 200 lieferung2 300 lieferung3 200
Brot Lieferung1 100 Lieferung2 50 Lieferung3 120
Karl-Heinz
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: query anpassen, geht das ?

  Alt 14. Jul 2010, 12:54
In der Frage steht es aber anders.
Welches DBMS? Manche kennen eine Listen-Aggegatsfunktion. Sonst musst du dass selber zusammenbasteln
Markus Kinzler
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.465 Beiträge
 
Delphi 12 Athens
 
#6

AW: query anpassen, geht das ?

  Alt 14. Jul 2010, 13:00
Wenn es sich um eine feste maximale Anzahl von Spalten handelt, kann man so etwas mit einer StoredProcedure realisieren. Aber die Aufgabe der Datenbank ist das eigentlich nicht, die soll Daten schnell und effektiv bereitstellen. Schaff dir Datenobjekte/Strukturen für die gewünschte Darstellungsform, die dann mit einer simplen Abfrage gefüllt werden.
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#7

AW: query anpassen, geht das ?

  Alt 14. Jul 2010, 13:00
In der Frage steht es aber anders.
Welches DBMS? Manche kennen eine Listen-Aggegatsfunktion. Sonst musst du dass selber zusammenbasteln
sorry wenn ich mich im Ausganspost falsch ausgedrückt habe.

Wie gesagt firebird 1.2 zugriff über zeos.
Karl-Heinz
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#8

AW: query anpassen, geht das ?

  Alt 14. Jul 2010, 13:03
Schaff dir Datenobjekte/Strukturen für die gewünschte Darstellungsform, die dann mit einer simplen Abfrage gefüllt werden.

Das wäre natürlich optimal, lässt sich aber leider nicht umsetzen.

Die Anforderungen in einem anderen Fall sind wieder andere, und ich kann nicht für jede spezielle Anforderung eine andere DB-Struktur verwenden.
Karl-Heinz
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: query anpassen, geht das ?

  Alt 14. Jul 2010, 13:07
Bei FireBird geht das:
SQL-Code:
select
    art.bezeichnung,
    LIST( 'Lieferung ' || VKLIEFERUNG_ID || ' ' || p.liefermenge, ' ') as liefermenge,
 from
    vkaufkopf as a,
    vkaufpos as p,
    artikel as art
 where
    a.vkaufkopf_id = p.vkaufkopf_id
    and p.art_id = art.artikel_id
 order by
    a.lieferdatum,kunden_id, artikel_id,vklieferung_id
group by
    art.bezeichnung;
Markus Kinzler
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#10

AW: query anpassen, geht das ?

  Alt 14. Jul 2010, 13:21
Bei FireBird geht das:
SQL-Code:
select
    art.bezeichnung,
    LIST( 'Lieferung ' || VKLIEFERUNG_ID || ' ' || p.liefermenge, ' ') as liefermenge,
 from
    vkaufkopf as a,
    vkaufpos as p,
    artikel as art
 where
    a.vkaufkopf_id = p.vkaufkopf_id
    and p.art_id = art.artikel_id
 order by
    a.lieferdatum,kunden_id, artikel_id,vklieferung_id
group by
    art.bezeichnung;

Viiiielen Dank,euch allen,und besonders mkinzler
es funktioniert .-)


Gruss KH
Karl-Heinz
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:54 Uhr.
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