startprobleme

luzie

Neuer Benutzer
Beiträge
3
Hallo,

bin absolut neu bei diesem Thema und hab eine Art "Grundsatzproblem"

ich habe eine Datenban:

eine Spalte "Woche", die Wochen sind durchnummeriert
eine Spalte "Tage", ebenfalls durchnummeriert (Montag = 1 usw.)
daneben eine Spalte "Umsatz"
weitere Spalte mit weiteren Werten

ich versuche abzufragen: wenn innerhalb ein und derselben Woche, ein Dienstag einen Umsatz von kleiner als xy hat, zeige mir den Datensatz von Donnerstag an

diese Abfrage soll nacheinander mit allen Wochen geschehen

Ich hoffe das jemand helfen kann
PS. meine Kenntnisse reichen nur bis zum "select * from ..., weiss deshalb rein gar nicht wie ich innerhalb der ein und derselben Wochen selektieren kann

danke an Hilfe

Luzie
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.028
Hallo,

bin absolut neu bei diesem Thema und hab eine Art "Grundsatzproblem"

ich habe eine Datenban:

Du meinst sicherlich Tabelle. versuche, diese Begriffe klar zu trennen.

eine Spalte "Woche", die Wochen sind durchnummeriert
eine Spalte "Tage", ebenfalls durchnummeriert (Montag = 1 usw.)
daneben eine Spalte "Umsatz"
weitere Spalte mit weiteren Werten

Nächstes jahr fängst dann an, eine Spalte für das Jahr dranzukleben. Nein, so wird das nix, Du hast ein falschen Design. Es gibt Datentypen, nutze diese.

ich versuche abzufragen: wenn innerhalb ein und derselben Woche, ein Dienstag einen Umsatz von kleiner als xy hat, zeige mir den Datensatz von Donnerstag an

diese Abfrage soll nacheinander mit allen Wochen geschehen

Ich hoffe das jemand helfen kann

Ich hab 2 Nachrichten für Dich, eine gute und eine schlechte. Zuerst die schlechte: mein Beispiel ist mit PostgreSQL. Die gute: damit geht es:

Code:
test=*# select * from umsatz ;
    tag     | umsatz          
------------+--------         
 2013-03-01 |  45.53          
 2013-03-02 |  26.21          
 2013-03-03 |  63.88          
 2013-03-04 |  45.42          
 2013-03-05 |  87.57          
 2013-03-06 |  36.68          
 2013-03-07 |  43.27          
 2013-03-08 |  20.78          
 2013-03-09 |  72.30          
 2013-03-10 |  51.91          
 2013-03-11 |   7.36          
 2013-03-12 |  23.65          
 2013-03-13 |   3.88          
 2013-03-14 |  10.16          
 2013-03-15 |  45.47          
 2013-03-16 |  86.53          
 2013-03-17 |   9.50          
 2013-03-18 |  92.68          
 2013-03-19 |  31.04          
 2013-03-20 |  59.33          
 2013-03-21 |  60.79          
 2013-03-22 |  74.78          
 2013-03-23 |  58.60          
 2013-03-24 |  59.92          
 2013-03-25 |  80.05          
 2013-03-26 |  97.13          
 2013-03-27 |  25.27          
 2013-03-28 |  71.92          
 2013-03-29 |   5.48          
 2013-03-30 |  58.05          
 2013-03-31 |  21.36          
(31 rows)                     

Time: 0,227 ms
test=*# select tag, umsatz, case when extract (dow from tag) = 2 and umsatz < 50 then (select x.umsatz from umsatz x where tag = umsatz.tag+2) else umsatz end from umsatz ;
    tag     | umsatz | umsatz
------------+--------+--------
 2013-03-01 |  45.53 |  45.53
 2013-03-02 |  26.21 |  26.21
 2013-03-03 |  63.88 |  63.88
 2013-03-04 |  45.42 |  45.42
 2013-03-05 |  87.57 |  87.57
 2013-03-06 |  36.68 |  36.68
 2013-03-07 |  43.27 |  43.27
 2013-03-08 |  20.78 |  20.78
 2013-03-09 |  72.30 |  72.30
 2013-03-10 |  51.91 |  51.91
 2013-03-11 |   7.36 |   7.36
 2013-03-12 |  23.65 |  10.16
 2013-03-13 |   3.88 |   3.88
 2013-03-14 |  10.16 |  10.16
 2013-03-15 |  45.47 |  45.47
 2013-03-16 |  86.53 |  86.53
 2013-03-17 |   9.50 |   9.50
 2013-03-18 |  92.68 |  92.68
 2013-03-19 |  31.04 |  60.79
 2013-03-20 |  59.33 |  59.33
 2013-03-21 |  60.79 |  60.79
 2013-03-22 |  74.78 |  74.78
 2013-03-23 |  58.60 |  58.60
 2013-03-24 |  59.92 |  59.92
 2013-03-25 |  80.05 |  80.05
 2013-03-26 |  97.13 |  97.13
 2013-03-27 |  25.27 |  25.27
 2013-03-28 |  71.92 |  71.92
 2013-03-29 |   5.48 |   5.48
 2013-03-30 |  58.05 |  58.05
 2013-03-31 |  21.36 |  21.36
(31 rows)

Time: 0,509 ms
test=*#

Am 12. und 19., das sind Dienstage, ist der Umsatz kleiner als 50. Daher wird der vom Donnerstag angezeigt.

Da das mit PostgreSQL gemacht ist, wirst das vermutlich anpassen müssen. Oder gleich PG nehmen ;-)


Andreas
 

luzie

Neuer Benutzer
Beiträge
3
Hi,

bei den Angaben der Wochen und Tage handelt es sich um ein reines Beispiel, ich dachte mir das etwas anschaulicher ist als pure Zahlenkolonnen.

Luzie
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.394
Code:
SELECT    t2.*
FROM    tabelle t2
WHERE    t2.tag = 'Donnerstag'
AND        t2.woche IN (    SELECT    t1.woche
                        FROM    tabelle t1
                        WHERE    t1.tag = 'Dienstag'
                        AND        t1.umsatz = 'xy' )
So sollte es auch gehen.
 
Oben