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 2 von 3     12 3      
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#11

AW: Select-Resultat in einer Spalte anzeigen

  Alt 12. Jul 2014, 12:26
Bei mir geht sowas:
Code:
select list (valuetxt) from (select VALUETXT from TESTGEN_VAL a order by Valuetxt) b
Vermutlich kann man auch noch einen (gemeinsamen) Schlüsselwert der Listvalues reinpacken (innen) und den dann außen ins Groub by aufnehmen und ausgeben bzw. weiterverwenden.
Gruß, Jo
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#12

AW: Select-Resultat in einer Spalte anzeigen

  Alt 12. Jul 2014, 13:47
Also ich habe jetzt auch an mehreren Stellen gelesen, das die Reihenfolge unbestimmt ist. Bei einem ORDER BY wäre es naheliegend, das es funktioniert, aber es wäre auch denkbar, das die Daten bei der Verarbeitung zum LIST nicht immer sequentiell abgearbeitet werden (Parallelbetrieb, Strategiewechsel etc.). Bei kleinen Tabellen dürfte das aber eher nicht der Fall sein.

Anmerkung: Man würde auch annehmen, das Daten in einem SELECT in der Reihenfolge geliefert werden, in der sie eingefügt wurden (wenn sonst keine Delete oder Update passiert ist). Darauf kann man sich aber auch nicht verlassen, weil es hier um Daten*mengen* geht, keine Daten*listen*. Allerdings bildet 'ORDER BY' eine Ordnung auf die Darstellung der Menge als Liste.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#13

AW: Select-Resultat in einer Spalte anzeigen

  Alt 12. Jul 2014, 16:01
Also ich habe jetzt auch an mehreren Stellen gelesen, das die Reihenfolge unbestimmt ist. Bei einem ORDER BY wäre es naheliegend, das es funktioniert, aber es wäre auch denkbar, das die Daten bei der Verarbeitung zum LIST nicht immer sequentiell abgearbeitet werden (Parallelbetrieb, Strategiewechsel etc.).
Mein Beispiel oben ergibt ohne Order By eine andere Reihenfolge. Und zwar die gleiche ungeordnete Folge, die ein Select * ohne Order By ergibt.
Die Tatsache, dass es mit und ohne Order By unterschiedlich ausgegeben wird und das auch noch entsprechend der Bedeutung von Order by, deutet darauf hin, dass es entsprechend implementiert ist.
Doku dazu habe ich auf die Schnelle nicht gefunden.
Gruß, Jo

Geändert von jobo (12. Jul 2014 um 16:12 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
 
#14

AW: Select-Resultat in einer Spalte anzeigen

  Alt 12. Jul 2014, 16:23
Da diese Funktion ja in einem GROUP BY verwendet wird, werden die Einträge wohl so genommen, wie die gerade reinkommen. Gebe ich eine nach den Einträgen sortierte Liste dort rein bekommt man auch ein sortiertes Ergebnis. Dieses kann man aber nicht direkt beeinflussen, sondern eben nur indirekt über diesen Zwischenschritt.

Darum die Aussage, dass die Sortierung unbestimmt ist.

(Müsste man mal ausprobieren)
grptxt
1b
1c
1a
SQL-Code:
  select list( i.txt, ',' )
    from (
             select d.grp, d.txt
               from data d
           order by d.txt ) i
group by i.grp
sollte dann
Code:
a,b,c
ergeben
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 (12. Jul 2014 um 16:37 Uhr)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#15

AW: Select-Resultat in einer Spalte anzeigen

  Alt 12. Jul 2014, 17:13
sollte dann
Code:
a,b,c
ergeben
Das tut es ja, wie ich schrieb. Ein "Group by" sollte an der Sortierung des "List()"- Result nicht mehr viel ändern, da es bereits vor dem Group schon stehen dürfte. "Group by" ist in Deinem Beispiel überflüssig, wird aber halt meistens nötig, wenn man das "List()" nicht ganz auf dem Trockenen einsetzen will.
Gruß, Jo
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#16

AW: Select-Resultat in einer Spalte anzeigen

  Alt 12. Jul 2014, 18:17
Bei mir funktioniert dieses View nicht so, daß die Einträge in der List-Spalte alphabetisch sortiert sind:
Code:
CREATE OR ALTER VIEW V_ZUSATZ1(
    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,
K.V_ZUSATZ_KLASSE,
Z.ENUMMER,
Z.Z_NOTIZ,
Z.BIO,
Z.GVO,
Z.MARKIERT

from ZUSATZ Z
inner join
   (select
        List(ZK_KLASSE,', ') as V_ZUSATZ_KLASSE,
        ZK_ZUSATZ as I
    from
        (select ZK_KLASSE, ZK_ZUSATZ
         from V_ZUSATZ_KLASSE
         order by ZK_KLASSE)
    group by I
    )
        K on I = Z.ID_ZUSATZ
order by Z_NAME;
Miniaturansicht angehängter Grafiken
firebirdlistviewsql1.jpg  
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#17

AW: Select-Resultat in einer Spalte anzeigen

  Alt 12. Jul 2014, 20:45
Bei mir funktioniert dieses View nicht so, daß die Einträge in der List-Spalte alphabetisch sortiert sind:
Es scheint tatsächlich am Group by zu liegen. So geht's:
Code:
SELECT a.OID, a.ICLASS,
  (select List(iname) as ItemList
    from (select iname, iclass
            from ANITEM i
           where i.iclass = a.ICLASS
           order by iname)) as X
FROM ANORDER a
Gruß, Jo
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#18

AW: Select-Resultat in einer Spalte anzeigen

  Alt 13. Jul 2014, 02:08
... 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? Ich blicke da nämlich nicht wirklich durch, deshalb frage ich ja hier nach.

Ist aber auch nicht mehr wichtig, ich hab das jetzt clientseitig gelöst ...
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#19

AW: Select-Resultat in einer Spalte anzeigen

  Alt 13. Jul 2014, 09:38
Oder weshalb sonst verwendet niemand die Tabellen- und Spaltennamen, die ich bereits mehrfach gepostet habe?
Weil es keine Auftragsarbeit ist, die Du bestellt hast, sondern Gefallen, die Dir die Forenteilnehmer tun. Und da gilt: Demütig und dankbar nehmen, was kommt und freundlich bleiben.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#20

AW: Select-Resultat in einer Spalte anzeigen

  Alt 13. Jul 2014, 10:31
..Oder weshalb sonst verwendet niemand die Tabellen- und Spaltennamen, die ich bereits mehrfach gepostet habe? Ich blicke da nämlich nicht wirklich durch, deshalb frage ich ja hier nach.

Ist aber auch nicht mehr wichtig, ich hab das jetzt clientseitig gelöst ...
@Perlsau
Du gibst hier Delphi Anfängern gern und eindringliche Ratschläge, sich mit den Grundlagen oder aber auch Besonderheiten Ihres Anliegens auseinanderzusetzen. Wie kommt es zu Deiner Lustlosigkeit, den eigenen Ratschlägen zu folgen?

Weshalb niemand Deine Objektnamen verwendet?
Es ist ganz einfach, ich spreche mal für mich. Meine Unterstützung hier beschränkt sich seit längerem auf den Bereich SQL, weil ich seit einigen Jahren nicht mehr mit Delphi arbeite und es mich zuviel Zeit kostet, valide Hinweise zu geben. Ich bleib also bei meinen Leisten und gebe Tipps und Hinweise zu SQL, die ich mehrheitlich allgemein halte oder auch mal mit einem konkreten Stück Code, einem Doku Link oder was auch immer versehe, um einen möglichen Nutzen für den TE zu bieten. Das ist idR eine Frage von wenigen Minuten Aufwand für mich.
So auch hier, ich habe mich u.a. soweit aus dem Fenster gelehnt, Sir Rufos Präzisierung meines Vorschlags ohne Prüfung zu kommentieren, einfach weil ich mir meiner Sache ziemlich sicher war und eine echte Prüfung scheinbar nicht im richtigen Verhältnis zum Nutzen stand.
Wie sich herausgestellt hat, funktionieren offenbar beide Vorschläge nicht in der Realität.

Jetzt nur mal so als Zwischenergebnis:
So funktioniert ein Forum doch, oder?!

Ich habe dann (nachdem Du das als nicht funktionierend gemeldet hast) auf Basis eigener Tabellen, die bei mir irgendwo in FB rumfliegen, das Problem nachgestellt und Dir eine funktionierende Variante gepostet, handgetestet. Dass richtig sortiert wird, musst bzw. kannst Du glauben, auf Nachfrage hätte ich Dir auch noch so einen schicken Screenshot geliefert.

Wenn ich mir die (Frei-)Zeit nehme, soetwas zu tun, kann ich nur schwer nachvollziehen, wie es zu Deinen Klagen kommt.

Aber weil Du so nett gefragt hast, hier noch eine Erläuterung:
aus
Code:
Select
  <a.felder>
  <b.listenfeld>
from
  <haupttabelle> a
  <Select List() from ListenQuelle .. order by ..> b*
where a.joinkrit = b.joinkrit
wird in meinem Beispiel
Code:
Select
  <a.felder>
  <Select List() from ListenQuelle
  where a.joinkrit = b.joinkrit
  .. order by ..
  > b*
from
  <haupttabelle> a
* Das Statement ist hier symbolisch dargestellt und verkürzt, die Schachtelung ist nicht abgebildet


Ach noch ein Tipp, wenn Du wirklich erwartest, dass ein Helfer Deine Objektnamen nutzt:
Dazu ist es normalerweise (im professionellen Rahmen) üblich, ein möglichst vereinfachtes Code Beispiel zu liefern, mit dem der Fehler reproduzierbar ist.
Für SQL wird das Beispiel in Form eines vollständigen, funtionierenden DML Scripts inkl. Testdaten gepostet (insert statements). Diese Daten kann man als Fragesteller idR mit ein paar Handgriffen aus seinem System quetschen und erlauben es dem Helfer innerhalb von Sekunden, das echte Problem zu bearbeiten, echte Fehlermeldungen zu sehen und möglicherweise auf echte Bugs und eigenartige Phänomene zu stoßen. (statt zu theoretisieren oder abstrahieren, geschweige denn anhand von SQL Fragmenten erstmal SQL Archäologisch tätig zu werden)

Ich hoffe, wir verstehen uns.
Gruß, Jo
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 19:57 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