Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi select statement (https://www.delphipraxis.net/135660-select-statement.html)

jangbu 15. Jun 2009 16:00

Datenbank: SQL-Server • Version: 2000 • Zugriff über: BDE

select statement
 
Hallo,

suche für folgendes Problem ein passendes sql-statement:

Tabellenfelder:
Feld-1(Rezept) Feld-2(Element) Feld-3(Wert)

Werte:
Rezept-A Si 0,1
Rezept-A Fe 0,2
Rezept-A Cu 0,3
Rezept-B Si 1,0
Rezept-B Fe 2,0
Rezept-B Cu 3,0

usw.

Ich brauche die Werte aber nicht in mehreren records/Zeilen sondern in einem/r Zeile. Die Query:

select * from Tabelle
order Rezept,Element

bringt mich also nicht weiter. Kenne mich mit subselects bzw. union nicht aus. Damit müsste, glaube ich, sowas gehen?

jangbu

quendolineDD 15. Jun 2009 16:07

Re: select statement
 
Einfach zwischen deine SQL-Abfragen ein Union setzen :-)

DeddyH 15. Jun 2009 16:41

Re: select statement
 
Sicher? Ich hab das ganz anders verstanden, aber sehe den Sinn darin noch nicht.

quendolineDD 15. Jun 2009 16:46

Re: select statement
 
Den Sinn dahinter habe ich auch nicht verstanden, aber er wollte doch die Ergebnisse mehrerer selects in einer Zeile haben, also rate ich zu union.

DeddyH 15. Jun 2009 16:51

Re: select statement
 
Eine Union ist aber was Anderes.

quendolineDD 15. Jun 2009 16:55

Re: select statement
 
Zitat:

Zitat von DeddyH
Eine Union ist aber was Anderes.

Oh Gott :wall: Stimmt. Peinlich.

shmia 15. Jun 2009 17:01

Re: select statement
 
Zitat:

Zitat von quendolineDD
...aber er wollte doch die Ergebnisse mehrerer selects in einer Zeile haben, also rate ich zu union.

Mit Union verbindet man zwei (oder mehr) Datasets aber vertikal; es werden also mehr Zeilen, nicht mehr Spalten.
Man müsste jetzt auch noch wissen, warum der Threadersteller die Felder horizontal vermehren möchte.
Mit einem Reportgenerator kann man z.B. recht einfach mehrspaltig drucken.

http://www.itrain.de/knowhow/sql/tsql/pivot/pivot.asp

jangbu 15. Jun 2009 20:57

Re: select statement
 
Ich muss in einer DBLookupComboBox die Datensätze in der DropDown-Liste anzeigen. Dazu baue ich über "select join" die Daten so zusammen, dass ich sie alle im ListField zusammengefasst anzuzeigen kann. Die besagte Analysenwerte jedoch recordweise vorliegen, muss ich sie zuvor so zusammenstellen, dass ich sie als "einen" record darstellen kann, also in einer Zeile. Das mit UNION klingt gut, kenne mich blos nicht so gut aus. Wie müste denn das select statement aussehen?

jangbu

mkinzler 15. Jun 2009 21:16

Re: select statement
 
Deine Aussage ist etwas missverständlich. Bruachst du die Werte nun als Spalten ( ein Record) oder als Zeilen ( einer Spalte)?

omata 15. Jun 2009 21:22

Re: select statement
 
Ja das ist alles sehr unverständlich, zeigt doch mal (genau) wie deine Daten in der Datenbank abgelegt sind.
Und dann zeige uns was du (genau) wie haben möchtest.

Hier mal ein Vorschlag... (wenn das überhaupt mit deinen Informationen möglich ist)
SQL-Code:
EXECUTE('
DECLARE @value VARCHAR(10)
DECLARE @result VARCHAR(1000)

DECLARE c CURSOR FOR
SELECT feld1
FROM rezept

SET @result = ''''
OPEN c
FETCH c INTO @value
WHILE @@fetch_status = 0 BEGIN
  IF @result <> '''' BEGIN
    SET @result = @result + '', ''
  END
  SET @result = @result + @value
  FETCH c INTO @value
END
CLOSE c

DEALLOCATE c

SELECT 1 sort, @result AS result
UNION
SELECT 2 sort, feld1
FROM rezept
ORDER BY sort
')

jangbu 15. Jun 2009 21:32

Re: select statement
 
Hallo kminzler,

ich brauche die felder mehrer records in einem:

select * from rezept where rezept = "Rezept1"

aktuelles Ergebnis der Abfrage => mehrere records mit je einem Element+Wert
Element Wert
Si 0,1
Fe 0,2
Cu 0,3

benötigtes Ergebnis der Abfrage => ein record mit allen Elementen+Werten
0,1 0,2 0,3

jangbu

mkinzler 15. Jun 2009 21:54

Re: select statement
 
Also eine Pivot-Abfrage

jangbu 16. Jun 2009 09:30

Re: select statement
 
Liste der Anhänge anzeigen (Anzahl: 1)
hallo,

hab mal die Ist- und Soll-Situation dokumentiert.

rwachtel 16. Jun 2009 09:45

Re: select statement
 
Zitat:

Zitat von jangbu
[...] hab mal die Ist- und Soll-Situation dokumentiert.

mkinzler hat Dir schon das richtige Stichwort gennant.

http://lmgtfy.com/?q=sql+pivot

Direkt der erste Link ist ein Treffer.

DeddyH 16. Jun 2009 09:50

Re: select statement
 
Siehe #7 :zwinker:

nahpets 16. Jun 2009 09:55

Re: select statement
 
Hallo,

hilft Dir das?
SQL-Code:
select Rezept, Sum(Si) As Si, Sum(Fe) as Fe, Sum(Cu) As Su from (
  select Rezept, Element,
    case Element when 'Si' then wert else 0 end as Si,
    case Element when 'Fe' then wert else 0 end as Fe,
    case Element when 'Cu' then wert else 0 end as Cu
  from Rezepte
  where gruppe = 'ABC' and Rezept in ('Si','Fe','Cu')
) intern
group by rezept

jangbu 16. Jun 2009 10:28

Re: select statement
 
sorry rwachtel, aber sql_pivot bringt mich irgendwie nicht weiter, da ich trotzdem mehrere Zeilen zurückbekomme! Oder was mach ich da falsch? Ist in meiner Anlage zu sehen.

jangbu

DeddyH 16. Jun 2009 10:40

Re: select statement
 
Vielleicht bringt dies Dich ein Stück weiter.

[edit] Vertippsler [/edit]

jangbu 16. Jun 2009 10:43

Re: select statement
 
Liste der Anhänge anzeigen (Anzahl: 1)
Danke nahpets,

genau das habe ich gesucht, passt jetzt (s.A.)! Dank auch an alle anderen!

jangbu


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:50 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