[MySql] jeden 5 oder 10 Wert ausgeben

Sammler

Well-known member
ID: 17948
L
23 Januar 2007
65
0
Nachdem der Flash Chart nun läuft stehe ich vor dem nächsten Problem :D

Der Normale Preischart funnzt problemlos, also der, welcher die letzten 30 Tage anzeigt. Ich spucke dazu einfach die letzten 30 Einträge aus.

Wenn ich aber die Spanne verändere von "30" Tage auf z.B. "2 Monate" oder "6 Monate" oder "1 Jahr" dann greift die SQL Abfrage auch auf die Tabelle zu. Es sollen wieder 30 Werte ausgespuckt werden, falls vorhanden.

Im Fall von "2 Monate" wäre es jeder 2 Wert, im Fall von 6 Monate jeder 6 usw.

Wie müsste die SQL Abfrage in dem Fall aussehen ?

Select FROM Tabelle where preis > DATUM ORDER BY DATUM DESC ...... Limit 30

Ich könnte auch eine Schleife anlegen, die mir die neuen Datumsangeben berechnet.
In der Schleife hole ich mir den Wert aus der DB.
Das ist aber SQL for Noobs, da ich so 30 Anfragen hab :D

Geht doch bestimmt auch mit einer speziellen Abfrage oder ?

THX
 
Die gehen in die Richtung:
https://www.klamm.de/forum/showthread.php?t=116618
https://www.klamm.de/forum/showthread.php?t=178896

Ich könnte auch eine Schleife anlegen, die mir die neuen Datumsangeben berechnet.
In der Schleife hole ich mir den Wert aus der DB.
Das ist aber SQL for Noobs, da ich so 30 Anfragen hab :D
Du kannst die Schleife ja auch in deiner serverseitigen Programmiersprache machen und nur eine Abfrage der Art
Code:
[FONT=Courier New][B][COLOR=#9932cc]SELECT[/COLOR][/B] foo
[B][COLOR=#9932cc]FROM[/COLOR][/B] bar
[B][COLOR=#9932cc]WHERE[/COLOR][/B] foobar [B][COLOR=#9932cc]IN[/COLOR][/B] (42, 4711, ...);[/FONT]
. Dann hast du die DB nur einmal genervt.
 
Interesanter Ansatz, also zuerst erstelle ich einen String wo alle betreffenden Daten drin sind.

Diesen String übergebe ich dann in das "IN" Feld wo die Klammern sind.
Werds mal testen.
 
Ich meinte folgendes :)

Je nach auswahl errechne ich die benötigten Daten.
Die haue ich in ein Arry, wenns voll ist gebe ich es wieder aus, so das es dann so aussieht.

where date IN ( 2008-07-14, 2008-07-12, 2008-07-10, 2008-07-08, 2008-07-06.... );

So müste es gehen.

@ ice-breaker
Genau wie in deinem Link, danke :)
 
where date IN ( 2008-07-14, 2008-07-12, 2008-07-10, 2008-07-08, 2008-07-06.... );
Tip: Das is äquivalent zu
Code:
where date IN ( 1987, 1985, 1983, 1981, 1979.... );
...falls es keine Fehlermeldung bringt, bringt es auf alle Fälle nicht das gewünschte Resultat.
 
Ja, und wie alles andere was der Computer macht. Woher soll der auch wissen wenn du 1-1 eingibst dass du eigentlich 1+1 rechnen willst?

Neija bei demBeispiel gebe ich dir Rcht, aber bei den StringToInt Conversion oder anderen Dingen könnte es schon rummaulen, man kann ja auch den StrictMode aktivieren womit dann schon mal ein Teil gemeckert wird.
 
wollte nur mitteilen das es super funktioniert :)
Hätte nicht gedacht, das es mit so einem einfachen Befehl geht.
Man lernt nicht aus.

PS: ich muste die Werte aber mit Apos speichern also so

where date IN ( '2008-07-14', '2008-07-12', '2008-07-10', '2008-07-08', '2008-07-06'.... );

Noch mals danke für den Input :)