AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Alle Werte zwischen zwei ZAhlen mit SQL ausgeben
Thema durchsuchen
Ansicht
Themen-Optionen

Alle Werte zwischen zwei ZAhlen mit SQL ausgeben

Ein Thema von barnti · begonnen am 16. Okt 2008 · letzter Beitrag vom 17. Okt 2008
Antwort Antwort
Seite 1 von 2  1 2      
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#1

Alle Werte zwischen zwei ZAhlen mit SQL ausgeben

  Alt 16. Okt 2008, 10:57
Datenbank: Oracle • Version: 10 • Zugriff über: PL/SQL
Hallo zusammen,

ich möchte aus einer Tabelle mit zwei Spalten alle Werte einzeln ausgegeben bekommen, die in diesem Interval der beiden Spalten liegen(incl der Intervalgrenzen). Z.B.:

Spalte_A | Spalte_B

100 | 110


Ergebnis:

100
101
102
103
104
105
106
107
108
109
110

Geht so etwas mit einem SQL-Statement oder muss ich da auf PL/SQL zurückgreifen? Hat jemand eine Idee?
Gruß,

Barnti
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Alle Werte zwischen zwei ZAhlen mit SQL ausgeben

  Alt 16. Okt 2008, 11:56
Einen interessanten Ansatz habe ich hier gefunden:http://problemlos.ch/wp/2006/03/31/o...ql-zaubereien/
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
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Alle Werte zwischen zwei ZAhlen mit SQL ausgeben

  Alt 16. Okt 2008, 12:02
Hi,

Zitat von DeddyH:
Einen interessanten Ansatz habe ich hier gefunden:http://problemlos.ch/wp/2006/03/31/o...ql-zaubereien/
Echt beeindruckend! Jetzt muss ich es nur noch verstehen damit ich es für meine Zwecke gebrauchen kann!

Danke!
Gruß,

Barnti
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

Re: Alle Werte zwischen zwei ZAhlen mit SQL ausgeben

  Alt 16. Okt 2008, 13:29
Hallo,

nur ein Schnellschuß:

SQL-Code:
select MeinstDuDas from
(
  SELECT LEVEL MeinstDuDas
  FROM test
  CONNECT BY LEVEL <= greatest(Spalte_a,Spalte_b)
) where MeinstDuDas > (select Least(Spalte_a,Spalte_b) from test)
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Alle Werte zwischen zwei ZAhlen mit SQL ausgeben

  Alt 16. Okt 2008, 13:30
Hi,
ich habe mit dem Tip folgende Abfrage zusammen gestellt:
SQL-Code:
SELECT l FROM (
                SELECT LEVEL l FROM dual CONNECT BY LEVEL < = (
                                    SELECT a.rb_endnummer AS endIndex
                                      FROM MeineTabelle a
                                     WHERE a.rb_anfangsnummer = '1396000')
               )

WHERE l >= (
                                    SELECT a.rb_anfangsnummer AS startIndex
                                      FROM MeineTabelle a
                                     WHERE a.rb_anfangsnummer = '1396000')
Das Problem: Ich bekomme immer nur für einen Eintrag(1396000) aus meiner Tabelle die Werte aufgelistet. Wie kann ich das für alle Einträge aus der Tabelle erweitern?
Gruß,

Barnti
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

Re: Alle Werte zwischen zwei Zahlen mit SQL ausgeben

  Alt 16. Okt 2008, 14:35
Hallo,
Zitat von barnti:
SQL-Code:
SELECT l FROM (
                SELECT LEVEL l FROM dual CONNECT BY LEVEL < = (
                                    SELECT a.rb_endnummer AS endIndex
                                      FROM MeineTabelle a
                                     WHERE a.rb_anfangsnummer = '1396000')
               )

WHERE l >= (
                                    SELECT a.rb_anfangsnummer AS startIndex
                                      FROM MeineTabelle a
                                     WHERE a.rb_anfangsnummer = '1396000')
Das Problem: Ich bekomme immer nur für einen Eintrag(1396000) aus meiner Tabelle die Werte aufgelistet. Wie kann ich das für alle Einträge aus der Tabelle erweitern?
befürchte, dass das nicht geht, da die inneren Selects nur eine Zeile als Ergebnis liefern dürfen.
Momentan fällt mir da nur ein - Schleife drum machen, für nur SQL weiß ich keine Lösung, eigentlich Schade, wäre sonst so schön einfach.

Schaumal, ob die Dir 'ne Idee liefern können: www.sqlsnippets.com
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Alle Werte zwischen zwei Zahlen mit SQL ausgeben

  Alt 16. Okt 2008, 14:38
Hi,
Zitat von nahpets:
Das Problem: Ich bekomme immer nur für einen Eintrag(1396000) aus meiner Tabelle die Werte aufgelistet. Wie kann ich das für alle Einträge aus der Tabelle erweitern?
befürchte, dass das nicht geht, da die inneren Selects nur eine Zeile als Ergebnis liefern dürfen.
Momentan fällt mir da nur ein - Schleife drum machen, für nur SQL weiß ich keine Lösung, eigentlich Schade, wäre sonst so schön einfach.

Schaumal, ob die Dir 'ne Idee liefern können: www.sqlsnippets.com
Das hatte ich befürchtet. Damit kann ich dann auch jeden Datensatz per Cursor holen und dann in einer Schleife die einzelnen Einträge erstellen.

Danke für den Link! Ich werde mich dort mal umschauen.
Gruß,

Barnti
  Mit Zitat antworten Zitat
NormanNG

Registriert seit: 1. Feb 2006
294 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Alle Werte zwischen zwei ZAhlen mit SQL ausgeben

  Alt 16. Okt 2008, 14:50
Hi,

für den MS SQL Server gibt es eine Lösung mit einer "tally table".
Evtl. hilft das auch hier weiter? Link
Gruß
Norman
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#9

Re: Alle Werte zwischen zwei ZAhlen mit SQL ausgeben

  Alt 16. Okt 2008, 16:24
Hallo,

einen hab' ich noch, aber bitte dafür nicht hauen:

SQL-Code:
select * from (
select
'SELECT l FROM (SELECT LEVEL l FROM dual '
||'CONNECT BY LEVEL <= ('
||'SELECT spalte_b AS endIndex FROM test WHERE spalte_a = '||spalte_a
||')) WHERE l >= ('
||'SELECT spalte_a AS startIndex FROM test WHERE spalte_a = '||spalte_a ||')'||chr(10)
||'union allas Spalte
from test
order by spalte_a
)
union all
select 'select 0 from dualfrom dual
Man nehme das SQL, führe es aus, nehme das Ergebnis und führe es aus.

Nagut, was passiert hier:
Es wird mit SQL ein SQL-Statement generiert, das für jede Zeile der Tabelle eine Select ... Level ... generiert, die per union all miteinander verbunden werden. Dadurch ist am Ende ein union all zuviel, das mit einem select 0 from dual "neutralisiert" wird.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Alle Werte zwischen zwei ZAhlen mit SQL ausgeben

  Alt 16. Okt 2008, 16:29
Ach Du Sch**e . Da würde ich dann doch eher eine SP schreiben.
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
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 16:42 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