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
mkinzler
(Moderator)

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

AW: Select-Resultat in einer Spalte anzeigen

  Alt 11. Jul 2014, 17:27
Die Spalte fehlt in der DERIVED TABLE
SQL-Code:
...
K.V_ZUSATZ_KLASSE,
K.ZK_ZUSATZ,
Z.ENUMMER,
Z.Z_NOTIZ,
Z.BIO,
Z.GVO,
Z.MARKIERT

from ZUSATZ Z
inner join
   (select
        ZK_ZUSATZ, List(ZK_KLASSE,', ') as V_ZUSATZ_KLASSE ...
Markus Kinzler
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#2

AW: Select-Resultat in einer Spalte anzeigen

  Alt 11. Jul 2014, 19:29
Richtig, die Spalte ZK_KLASSE fehlt, das ist der Knackpunkt. Nach einigem Herumprobieren hab ich nun folgende Lösung gefunden:
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
        V_ZUSATZ_KLASSE
    group by
        I)
        K on I = Z.ID_ZUSATZ;
Jetzt gibt es nur noch einen kleinen Schönheitsfehler: Die Klassen in der Spalte Z_KLASS sind nicht alphabetisch geordnet. Wo muß ich denn jetzt das Order By ZK_KLASS einfügen?
Angehängte Grafiken
Dateityp: jpg FirebirdListViewSQL.jpg (94,9 KB, 9x aufgerufen)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Select-Resultat in einer Spalte anzeigen

  Alt 11. Jul 2014, 19:35
In der DERIVED TABLE
Markus Kinzler
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#4

AW: Select-Resultat in einer Spalte anzeigen

  Alt 11. Jul 2014, 20:37
Ich glaub, eine sortierte Ausgabe in LIST geht gar nicht:

The ordering of the list values is undefined.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#5

AW: Select-Resultat in einer Spalte anzeigen

  Alt 12. Jul 2014, 07:59
Schreib dir die Routine doch selbst:
Code:
SET TERM !!;
CREATE PROCEDURE PSLIST(ID INTEGER)
  RETURNS (CONCAT VARCHAR(2000))
AS
DECLARE VARIABLE name VARCHAR(255);
BEGIN
  CONCAT = '';
  FOR SELECT ZK_KLASSE
        FROM V_ZUSATZ_KLASSE
       WHERE ID_ZUSATZ = :ID
       ORDER BY ZK_KLASSE
  INTO :name
  DO BEGIN
    CONCAT = CONCAT || coalesce(name,'');
  END
  SUSPEND;
END!!
SET TERM ;!!
Getippt und nicht getestet.
  Mit Zitat antworten Zitat
jobo

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

AW: Select-Resultat in einer Spalte anzeigen

  Alt 12. Jul 2014, 11: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
 
#7

AW: Select-Resultat in einer Spalte anzeigen

  Alt 12. Jul 2014, 12: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
 
#8

AW: Select-Resultat in einer Spalte anzeigen

  Alt 12. Jul 2014, 15: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 15:12 Uhr)
  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 00:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz