AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datensätze zusammenfassen
Thema durchsuchen
Ansicht
Themen-Optionen

Datensätze zusammenfassen

Ein Thema von Uncle Cracker · begonnen am 10. Jun 2009 · letzter Beitrag vom 10. Jun 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Uncle Cracker
Uncle Cracker

Registriert seit: 30. Mär 2003
Ort: Freital
694 Beiträge
 
#1

Datensätze zusammenfassen

  Alt 10. Jun 2009, 10:03
Datenbank: MYSQL • Zugriff über: ODBC
Hallo Leute,

ich habe folgendes Problem und zwar habe ich folgendes Ergebnis nach einer SQL-Abfrage:

Vorgangsnr | Auftragsnr | Wert
123123123 | 09-0854 | abc
123123123 | 09-0854 | abc1
123123123 | 09-0854 | abc2
546456456 | 09-0899 | abc
546456456 | 09-0899 | abc1
546456456 | 09-0899 | abc2


Dies lasse ich in ein ListView ausgeben, nur sieht das nicht so schön aus, ich würde es gern so ausgeben lassen:

Vorgangsnr | Auftragsnr | Wert
123123123 | 09-0854 | abc, abc1, abc2
546456456 | 09-0899 | abc, abc1, abc2

Ist dies mit irgendeiner SQL-Anweisung möglich Daten so zusammen zufassen?


Danke
I wish it was legal to marry software because I'm madly in love with Delphi...
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Datensätze zusammenfassen

  Alt 10. Jun 2009, 10:07
hi,

kannst du den jetzigen SQL einmal zeigen?

Grüße
Ansgar
Ansgar
  Mit Zitat antworten Zitat
Benutzerbild von nachti1505
nachti1505

Registriert seit: 7. Apr 2007
188 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Datensätze zusammenfassen

  Alt 10. Jun 2009, 10:07
GROUP BY vorgangsnr, wert Sry, war Schwachsinn... *dumdidum*
  Mit Zitat antworten Zitat
Benutzerbild von Uncle Cracker
Uncle Cracker

Registriert seit: 30. Mär 2003
Ort: Freital
694 Beiträge
 
#4

Re: Datensätze zusammenfassen

  Alt 10. Jun 2009, 10:29
Naja, mit der jetzigen SQL-Anweisung könnt ihr wahrscheinlich nicht viel anfangen:

SELECT * FROM AB_AUFLAGE AB, VM_VORGANG V,KP_ECKTERMINE ECK,KP_AUFTRAG AUF,KL_KOSTENSTELLEN K,KL_MENUBEREICHE MEN,KP_GEPLANTEZEIT GEP,A_EXTNR EXT,VM_VARIABLEN VAR WHERE ECK.ECKTERMINTYP=3 AND ECK.ECKTERMIN BETWEEN 39971 AND 40000 AND V.VORGANGSNR=AB.VORGANGSNR AND V.VORGANGSNR=ECK.VORGANGSNR AND V.LI_FERTIG IS NULL AND ECK.VORGANGSNR=V.VORGANGSNR AND AUF.VORGANGSNR=ECK.VORGANGSNR AND AUF.STATUS < 2 AND ADR_INTNR=KUNDE_INTNR AND ADR_TYP=1 AND GEP.VORGANGSNR=ECK.VORGANGSNR AND K.KST_NR=GEP.KST_NR AND MEN.ECKTERMINTYP=ECK.ECKTERMINTYP AND K.MENBERNR=MEN.MENBERNR AND ADR_INTNR=KUNDE_INTNR AND VAR.VORGANGSNR (+) = V.VORGANGSNR AND VAR.VARNR (+) = 211 ORDER BY K.KST_KURZ Wenn ich "ORDER BY" durch "GROUP BY vorgangsnr, wert" ersetze bekomme ich die Meldung: Ambiguous column reference
I wish it was legal to marry software because I'm madly in love with Delphi...
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Datensätze zusammenfassen

  Alt 10. Jun 2009, 10:52
SQL-Code:
select
    Vorgangsnr, Auftragsnr, GROUP_CONCAT( Wert)
where
    ...
group by
   Vorgangsnr, Auftragsnr;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von f4k3
f4k3

Registriert seit: 15. Aug 2007
Ort: Nürnberg
313 Beiträge
 
Delphi 2007 Architect
 
#6

Re: Datensätze zusammenfassen

  Alt 10. Jun 2009, 11:03
Zitat von Uncle Cracker:
Naja, mit der jetzigen SQL-Anweisung könnt ihr wahrscheinlich nicht viel anfangen:

SELECT * FROM AB_AUFLAGE AB, VM_VORGANG V,KP_ECKTERMINE ECK,KP_AUFTRAG AUF,KL_KOSTENSTELLEN K,KL_MENUBEREICHE MEN,KP_GEPLANTEZEIT GEP,A_EXTNR EXT,VM_VARIABLEN VAR WHERE ECK.ECKTERMINTYP=3 AND ECK.ECKTERMIN BETWEEN 39971 AND 40000 AND V.VORGANGSNR=AB.VORGANGSNR AND V.VORGANGSNR=ECK.VORGANGSNR AND V.LI_FERTIG IS NULL AND ECK.VORGANGSNR=V.VORGANGSNR AND AUF.VORGANGSNR=ECK.VORGANGSNR AND AUF.STATUS < 2 AND ADR_INTNR=KUNDE_INTNR AND ADR_TYP=1 AND GEP.VORGANGSNR=ECK.VORGANGSNR AND K.KST_NR=GEP.KST_NR AND MEN.ECKTERMINTYP=ECK.ECKTERMINTYP AND K.MENBERNR=MEN.MENBERNR AND ADR_INTNR=KUNDE_INTNR AND VAR.VORGANGSNR (+) = V.VORGANGSNR AND VAR.VARNR (+) = 211 ORDER BY K.KST_KURZ Wenn ich "ORDER BY" durch "GROUP BY vorgangsnr, wert" ersetze bekomme ich die Meldung: Ambiguous column reference
mhm ... also evtl. kann ich dir die Lösung nicht auf dem Silbertablett präsentieren ... aber um deinen Code zu lesen
wäre es von Vorteil wenn du ihn auch ordentlich formatierst ... z.B. so ...

SQL-Code:
SELECT *

FROM
  AB_AUFLAGE AB, VM_VORGANG V,KP_ECKTERMINE ECK,KP_AUFTRAG AUF,
  KL_KOSTENSTELLEN K,KL_MENUBEREICHE MEN,KP_GEPLANTEZEIT GEP,A_EXTNR EXT,
  VM_VARIABLEN VAR

WHERE
  (ECK.ECKTERMINTYP = 3) AND
  (ECK.ECKTERMIN BETWEEN 39971 AND 40000) AND
  (V.VORGANGSNR = AB.VORGANGSNR) AND
  (V.VORGANGSNR = ECK.VORGANGSNR) AND
  (V.LI_FERTIG IS NULL) AND
  (ECK.VORGANGSNR = V.VORGANGSNR) AND
  (AUF.VORGANGSNR = ECK.VORGANGSNR) AND
  (AUF.STATUS < 2) AND
  (ADR_INTNR = KUNDE_INTNR) AND
  (ADR_TYP = 1) AND
  (GEP.VORGANGSNR = ECK.VORGANGSNR) AND
  (K.KST_NR = GEP.KST_NR) AND
  (MEN.ECKTERMINTYP = ECK.ECKTERMINTYP) AND
  (K.MENBERNR = MEN.MENBERNR) AND
  (ADR_INTNR = KUNDE_INTNR) AND
  (VAR.VORGANGSNR (+) = V.VORGANGSNR) AND
  (VAR.VARNR (+) = 211)

ORDER BY
  K.KST_KURZ
Ohne deine Tabellen zu kennen bin ich der Meinung dass deine Ergebnismenge, die aus dem Statement hervorgeht, größer ist als du sie überhaupt benötigst ... zumindest nach der Aussage, dass du nur die Vorgangsnummer, Auftragsnummer und den irgendeinen Wert brauchst ...

Bei deinem Statement holst du dir alle Datensätze und jedes FELD aus jeder im FROM angegebenen Tabelle. Benötigst für die Ausgabe und Überprüfung aber sicherlich nicht alle ... Ob deine Abfrage noch sonderlich performant ist wenn in jeder Tabelle sich mal ein paar huntertausend Datensätze angesammelt haben wage ich zu bezweifeln.

Alles weitere können dir bestimmt andere erklären
Sascha
  Mit Zitat antworten Zitat
Benutzerbild von nachti1505
nachti1505

Registriert seit: 7. Apr 2007
188 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Datensätze zusammenfassen

  Alt 10. Jun 2009, 11:10
Zitat von mkinzler:
...GROUP_CONCAT( Wert)...
Für welche RDMS existiert diese Funktion?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Datensätze zusammenfassen

  Alt 10. Jun 2009, 11:12
MySQL. In FireBird heisst sie LIST(). Ob noch andere DBMS diese unterstützen weiss ich leider nicht.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#9

Re: Datensätze zusammenfassen

  Alt 10. Jun 2009, 11:17
Zitat von mkinzler:
MySQL. In FireBird heisst sie LIST(). Ob noch andere DBMS diese unterstützen weiss ich leider nicht.
Kein Wunder, dass ich auf dev.mysql.com kein Ergebnis zu LIST() bekommen habe, obwohl ich wusste, dass es da sowas gibt
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Uncle Cracker
Uncle Cracker

Registriert seit: 30. Mär 2003
Ort: Freital
694 Beiträge
 
#10

Re: Datensätze zusammenfassen

  Alt 10. Jun 2009, 12:34
Hallo,

f4k3: deine Worte habe ich mir natürlich zu Herzen genommen, hatte mir nur immer die gesamte Ergebnismenge anzeigen lassen, um zu sehen welche Daten vorhanden sind.

mkinzler: Hatte mich schon so gefreut als ich deine Lösung gesehen hatte, nur leider wird group_concat nicht/noch nicht unterstützt.

Ich werde es jetzt doch versuchen irgendwie in Delphi zulösen...Danke trotzdem für eure Hilfe.
I wish it was legal to marry software because I'm madly in love with Delphi...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 14:32 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