AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Select-Resultat in einer Spalte anzeigen
Thema durchsuchen
Ansicht
Themen-Optionen

Select-Resultat in einer Spalte anzeigen

Ein Thema von Perlsau · begonnen am 11. Jul 2014 · letzter Beitrag vom 13. Jul 2014
Antwort Antwort
Seite 3 von 3     123   
Delphianer111

Registriert seit: 23. Nov 2007
9 Beiträge
 
Delphi XE5 Professional
 
#21

AW: Select-Resultat in einer Spalte anzeigen

  Alt 13. Jul 2014, 09:50
Hast du schon mal diese Variante ausprobiert ?

Code:
CREATE OR ALTER VIEW V_ZUSATZ(
    Z_ID,
    Z_NAME,
    Z_ALT,
    Z_KLASS,
    Z_ENUM,
    Z_NOTIZ,
    Z_BIO,
    Z_GVO,
    Z_MARK)
AS
select
Z.ID_ZUSATZ,
Z.Z_NAME,
Z.ALTNAME,
List(K.ZK_KLASSE,', ') as V_ZUSATZ_KLASSE,
(select List(ZK_KLASSE,', ') from (select K.ZK_KLASSE from V_ZUSATZ_KLASSE K where K.ZK_ZUSATZ = Z.ID_ZUSATZ ORDER BY K.ZK_KLASSE)
Z.ENUMMER,
Z.Z_NOTIZ,
Z.BIO,
Z.GVO,
Z.MARKIERT

from ZUSATZ Z
group by Z.ID_ZUSATZ;
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#22

AW: Select-Resultat in einer Spalte anzeigen

  Alt 13. Jul 2014, 12:07
Ich habe mir gerade mal die Mühe gemacht (weil es ja auch wirklich so schwer ist) und mal einen kleinen Test mit der LIST Funktion gemacht.

Grundlage dafür ist mein schon erwähntes Beispiel:
SQL-Code:
CREATE TABLE DATA
(
  GRP integer NOT NULL,
  TXT varchar(50) NOT NULL
);

commit;

/* Testdaten */
INSERT INTO DATA (GRP, TXT) VALUES ( 1, 'b' );
INSERT INTO DATA (GRP, TXT) VALUES ( 1, 'c' );
INSERT INTO DATA (GRP, TXT) VALUES ( 1, 'a' );

commit;
Nun ein erster simpler Test
SQL-Code:
select
    d.GRP,
    list( d.TXT, ',' )
from
    (
        select
            i.GRP,
            i.TXT
        from
            data i
        order by
            i.TXT
    ) d
group by
    d.GRP
;
und das Ergebnis (heureka) wie erwartet
GRPTXT
1a,b,c
Das war ja schon mal super ... dann können wir ja mal ein paar reale Daten einfließen lassen
SQL-Code:
/* realere Testdaten */
INSERT INTO DATA (GRP, TXT) VALUES ( 2, 'Emulgator' );
INSERT INTO DATA (GRP, TXT) VALUES ( 2, 'Stabilisator' );
INSERT INTO DATA (GRP, TXT) VALUES ( 2, 'Antioxidationsmittel' );

commit;
Und der SELECT liefert das ab
GRPTXT
1a,b,c
2Emulgator,Antioxidationsmittel,Stabilisator
Also entweder sortiert das was nicht richtig oder ... oder die LIST Funktion hat noch selber eine wie auch immer geartete Sortierung implementiert ... was ja einfach zu prüfen ist, wenn wir einfach mal die Werte so reinpusten wie die sind:
SQL-Code:
select
    d.GRP,
    list( d.TXT, ',' )
from
    data d
group by
    d.GRP
;
Das Ergebnis ist überraschenderweise:
GRPTXT
1a,b,c
2Emulgator,Antioxidationsmittel,Stabilisator
und somit völlig identisch mit der vorherigen Anweisung, wo wir die Daten vorab sortiert hatten.

Ein weiterer kleiner Test mit anderen Testdaten
SQL-Code:
/* weitere Testdaten */
INSERT INTO DATA (GRP, TXT) VALUES ( 3, 'b1' );
INSERT INTO DATA (GRP, TXT) VALUES ( 3, 'c' );
INSERT INTO DATA (GRP, TXT) VALUES ( 3, 'a' );

commit;
und wir erhalten egal mit welcher Abfrage dieses Ergebnis
GRPTXT
1a,b,c
2Emulgator,Antioxidationsmittel,Stabilisator
3a,c,b1

Damit steht nun also fest, dass die LIST Funktion die Werte selber intern einer Sortierung unterzieht, die man von aussen nicht beeinflussen kann.

Und ja, von einem langjährigen Programmierer - der Anfängern gerne und teilweise (sprachlich) sehr vehement unter die Nase reibt, dass diese sich doch mal mit den Grundlagen und dem Problem an und für sich auseinander setzen sollen und sie auch bitte keinen fertigen Quellcode erwarten können - hätte ich diese Analyse eigentlich schon erwartet und vor allem kein Gejammer, warum da nicht die eigenen Feldnamen benutzt werden.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#23

AW: Select-Resultat in einer Spalte anzeigen

  Alt 13. Jul 2014, 12:18
Hier hatte ich vorgeschlagen, sich die Funktion selbst zu schreiben. Da ich kein FB habe, kann ich das nicht ausprobieren, aber das doch dann fast so, wie der TE es erwartet: Vorgekaut, getestet. Nur verpackt habe ich es nicht. Tut mir leid-
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#24

AW: Select-Resultat in einer Spalte anzeigen

  Alt 13. Jul 2014, 12:45
Und ja, von einem langjährigen Programmierer - der Anfängern gerne und teilweise (sprachlich) sehr vehement unter die Nase reibt, dass diese sich doch mal mit den Grundlagen und dem Problem an und für sich auseinander setzen sollen und sie auch bitte keinen fertigen Quellcode erwarten können - hätte ich diese Analyse eigentlich schon erwartet und vor allem kein Gejammer, warum da nicht die eigenen Feldnamen benutzt werden.
Genau diese Analyse habe ich bereits durchgeführt. Das Resultat sieht man im beigefügten Screenshot. Deinen Vorwurf weise ich damit entschieden zurück!

Selbstverständlich versuche ich, SQL zu verstehen – mit mäßigem Erfolg. Daran hat auch das Studieren mehrerer SQL-Bücher nicht allzu viel geändert und meine SQL-Kenntnisse sind weiterhin nicht wirklich werktauglich. Das weiß ich und damit kann ich leben. Im Übrigen habe ich nicht gejammert, sondern festgestellt:

... und jetzt weiß ich natürlich wieder ganz genau, was was ist ... ich gehe mal davon aus, daß das in meinem View nicht geht, denn sonst hätte wohl irgend einer der SQL-Spezialisten nicht immer nur seinen eigenen Code gepostet, der mit meiner Situation augenscheinlich nicht zusammenpaßt ... Oder weshalb sonst verwendet niemand die Tabellen- und Spaltennamen, die ich bereits mehrfach gepostet habe?

Da postete jemand einen Code mit der Behauptung, das funktioniere, was es nicht tat. Natürlich werden List-Resultate sortiert dargestellt, wenn die Einträge in der Quell-Tabelle bereits richtig sortiert eingegeben wurden. Das ist in der Realität aber eher selten der Fall. Diese Behauptung hat mich offenbar geärgert, ohne daß mir das sofort bewußt war, und dieser Ärger ist dann wohl mit in das Posting geflossen, über das sich die Menge nun zu echauffieren beliebt.

Ich und viele andere hier machen das auch meistens so, wenn ich einem TE ein gepostetes Beispiel korrigiere: Ich verwende nicht irgendwelche frei erfundenen Bezeichner, sondern halte mich zur Erhöhung des Verständnisses, aber auch aus eigener Bequemlichkeit (ich muß das Beispiel ja nur kopieren) an das gepostete Beispiel. Natürlich verstehe ich, daß man das nicht macht, wenn man einen TE aufgrund gewisser Vorurteile nicht ausstehen kann. Für dieses Entgegenkommen bedanke ich mich herzlich

Mir fällt es zugebenermaßen schwer, die Variablen und Beispiel-Tabellen- und Spalten-Namen in mein Beispiel korrekt zu übertragen. Auch das habe ich ebenfalls bereits offen dargestellt:

Ich blicke da nämlich nicht wirklich durch, deshalb frage ich ja hier nach.

Was ich hier nun erleben darf, macht auf mich den starken Eindruck von Schadenfreude, und zwar von ganz bestimmten Usern, die auf so eine Gelegenheit nur gewartet zu haben scheinen. Dazu kann ich eigentlich nur eines sagen: Wenn's euch Freude macht und die Zufriedenheit erhöht, soll's mir recht sein. Moralische Vorwürfe erübrigen sich dann wohl in Zukunft, denn damit habt ihr die eigene angebliche Moral ad absurdum geführt

Wie bereits erwähnt habe ich mein "Problem" anderweitig gelöst. Es ging nur um eine Anzeige der zugeordneten Zusatzklassen. Damit ist dieses Thema für mich erledig.

Im Übrigen halte ich es für korrekt und wichtig, Anfänger, die sich ein Programm "zusammengeklickt" haben und dann fragen, wie sie eine IF-Schleife mit einem Button erstellen können, auf fehlende Grundkenntnisse und die dringende Beseitigung dieses Mißstandes hinzuweisen.

Geändert von Perlsau (13. Jul 2014 um 12:51 Uhr)
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#25

AW: Select-Resultat in einer Spalte anzeigen

  Alt 13. Jul 2014, 13:02
...Deinen Vorwurf weise ich damit entschieden zurück!...über das sich die Menge nun zu echauffieren beliebt....wenn man einen TE aufgrund gewisser Vorurteile nicht ausstehen kann. ...macht auf mich den starken Eindruck von Schadenfreude, und zwar von ganz bestimmten Usern, ...damit habt ihr die eigene angebliche Moral ad absurdum geführt
Merkste wat? Wir sind hier weder in einer Gerichtsverhandlung, noch in einem Dienstleistungsverhältnis, noch im Ring, noch im Persauhasserverein, sondern... in einem Forum. In *dem* Forum. Keiner will Dir was Böses, keiner hat Vorurteile, keiner ist so kindisch, irgendwelche Ressentiments gegen dich zu hegen oder zu schüren. Also, behaupte ich jetzt mal.



Echt ein Kindergarten manchmal. Das Leben.

Geändert von Dejan Vu (13. Jul 2014 um 13:10 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#26

AW: Select-Resultat in einer Spalte anzeigen

  Alt 13. Jul 2014, 13:06
Und ja, von einem langjährigen Programmierer - der Anfängern gerne und teilweise (sprachlich) sehr vehement unter die Nase reibt, dass diese sich doch mal mit den Grundlagen und dem Problem an und für sich auseinander setzen sollen und sie auch bitte keinen fertigen Quellcode erwarten können - hätte ich diese Analyse eigentlich schon erwartet und vor allem kein Gejammer, warum da nicht die eigenen Feldnamen benutzt werden.
Genau diese Analyse habe ich bereits durchgeführt. Das Resultat sieht man im beigefügten Screenshot. Deinen Vorwurf weise ich damit entschieden zurück!
Ähm, es besteht ein (qualitativer) Unterschied zwischen Beobachten und Analyse.

Deine Beobachtung ergab, dass es so (wie in dem Beispiel) nicht geht.
Meine Analyse ergab, dass es egal wie nicht geht.

(Kontext: die LIST Funktion von Firebird)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (13. Jul 2014 um 13:16 Uhr)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#27

AW: Select-Resultat in einer Spalte anzeigen

  Alt 13. Jul 2014, 13:17
Merkste wat? Wir sind hier weder in einer Gerichtsverhandlung, noch in einem Dienstleistungsverhältnis, noch im Ring, noch im Persauhasserverein, sondern... in einem Forum. In *dem* Forum. Keiner will Dir was Böses, keiner hat Vorurteile, keiner ist so kindisch, irgendwelche Ressentiments gegen dich zu hegen oder zu schüren. Also, behaupte ich jetzt mal.
Diese Behauptung ist unwahr! Du hattest Ende Mai bereits eine offizielle Verwarnung wegen Beleidigungen gegen mich erhalten! Man beleidigt niemanden, gegen den man keine Ressentiments hegt. Deine Scheinheiligkeit kannst du dir also getrost sparen, und das weißt du auch ganz genau Selbstverständlich ist mir diese perfide Methode, die eigenen Vorurteile auf die Vorverurteilten zu projizieren, wenn Letztere darauf verstimmt reagieren, bestens bekannt. Also laß gut sein und labe dich an deiner Schadenfreude, sie sei dir gegönnt

Ähm, es besteht ein (qualitativer) Unterschied zwischen Beobachten und Analyse.
Deine Beobachtung ergab, dass es so (wie in dem Beispiel) nicht geht.
Meine Analyse ergab, dass es egal wie nicht geht.
(Kontext: die LIST Funktion von Firebird)
Du hast doch keine Ahnung, was ich hier alles angestellt habe, um das List-Resultat alphabetisch zu sortieren! Selbstverständlich habe ich weit mehr ausprobiert, als ich hier dokumentiert habe. Egal was ich versucht habe: Das Resultat war stets dasselbe, genau wie in deinem Beispiel. Daher kam ich zu der bereits weiter oben dargestellten Schlußfolgerung: Es geht nicht.

Somit darfst du gerne wieder von deinem Sockel herabsteigen.

Geändert von Perlsau (13. Jul 2014 um 13:20 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 05:06 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