php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 13.04.2007, 00:18  
Benutzer
 
Registriert seit: 14.02.2006
Beiträge: 49
webazubi
Standard Schleife in Select? Oder wie addierte Datumswerte zeigen?

Hallo. In Ergänzung zu diesem Beitrag:
http://www.phpfriend.de/forum/viewtopic.php?t=57012

In meiner Termintabelle werden Serientermine folgendermaßen gespeichert:

Termin-ID: 1
anf_am: 15.05.2007
end_am: 15.06.2007
intervall: 1
dauer: 7

Soll heißen, ein Serientermin findet zwischen den beiden Datumswerten statt, wobei das Intervall 1 für "wöchentlich" steht und die dauer 7 für "alle 7 Tage" (was ja eigentlich das gleiche ist, aber mit der Spalte dauer lassen sich noch andere Zeitspannen bestimmen). Dieser Termin findet also jede Woche einmal statt.

Was klappt (und was ich am Ende zeige) ist folgendes: Ein Benutzer gibt ein Datum ein und der SQL-Code errechnet auf Basis der Daten oben, ob das gesuchte Datum in den Zeitraum passt (und ob das gesuchte Datum auch an einem Termin stattfindet, der nicht direkt in der Termintabelle steht, sondern der sich nur nur das Intervall errechnen lassen würde).

Was ich jetzt aber suche ist das Gegenteil: Ich habe die Termin-ID (1) und will mir in SQL alle Datumswerte ausgeben, die in dem Intervall liegen. Also in dem Beispiel sollte die Ausgabe sein (jeweils um 7 erhöht und innerhalb von Anfangs- und Enddatum):
15.05.2007, 22.05.2007, 29.05.2007 ...

Wie kriege ich es jetzt hin, der Select-Anweisung zu sagen, sie solle diese Termine selbst berechnen, solange Start- und Enddatum nicht über bzw. unterschritten sind. Ich bräuchte innerhalb der Select-Anweisung eine Schleife oder so? Oder geht das nur über PHP?


Hier die SQL-Funktion zum Abfragen nach Terminen (da ist sicherlich viel Mist drin, aber das Entscheidende ist wohl der WHERE-Teil). Ich vermute mal, dass die Antwort da schon halb drin steht, aber ich sehe gerade den Wald vor lauter Bäumen nicht.
Code:
SET @dat = "2006-10-02";
$suchdatum2 = '2006-11-05';
													$sql_term = "SELECT *,
(PERIOD_ADD(EXTRACT(YEAR_MONTH FROM '$suchdatum2'),-0)*100)+1 AS ANF, 
DATE_FORMAT('$suchdatum2' ,'%Y-%m-01') AS ANF2,
(PERIOD_ADD(EXTRACT(YEAR_MONTH FROM '$suchdatum2'),-0)*100)+31 AS End, 
SUBDATE( ADDDATE( '$suchdatum2', INTERVAL 1 MONTH), INTERVAL DAYOFMONTH( '$suchdatum2' ) DAY) AS END2,
ELT( WEEKDAY('$suchdatum2')+1, 'Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag') As Tag1, 
DATE_FORMAT( '$suchdatum2', CONCAT( ELT( WEEKDAY('$suchdatum2')+1, 'Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'),', %d. ', ELT( MONTH('$suchdatum2'), 'Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'),' %Y')) As Datumlang, 
DAYOFWEEK('$suchdatum2')-1 As WTagSuche, 
DAYOFWEEK(anf_am)-1 As WTag, 
ELT( WEEKDAY(anf_am)+1, 'Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag') As Tag1_Ist, 
WEEK('$suchdatum2',1) As Wo 
FROM
t_termine


WHERE
(intervall = 0 AND anf_am = '$suchdatum2')
OR (
(
('$suchdatum2' BETWEEN anf_am AND end_am) AND
(intervall = 1 AND
DATEDIFF('$suchdatum2', anf_am) % dauer = 0) OR
(intervall = 2 AND
PERIOD_DIFF(EXTRACT(YEAR_MONTH FROM '$suchdatum2'), EXTRACT(YEAR_MONTH FROM anf_am)) % dauer = 0 AND
DAYOFMONTH(anf_am) = DAYOFMONTH('$suchdatum2'))  OR
(intervall = 3 AND
PERIOD_DIFF(EXTRACT(YEAR_MONTH FROM '$suchdatum2'), EXTRACT(YEAR_MONTH FROM anf_am)) % dauer = 0 
)
))
webazubi ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 15.07.2007, 13:04  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.654
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo webazubi,

auch wenn du Zergling beweisen wolltest, dass alles in SQL zu lösen ist, solltest du spätestens jetzt dazu übergehen und das in mehreren Schritten und in kleineren SQL-Blöcken realisieren - mehr kann ich dir dazu nicht sagen.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Kein Ergebnis bei SELECT (MySQL 4.1.9) dr.e. Datenbanken 4 15.06.2008 19:54
[Erledigt] Mysql Insert Select + Concat Hu5eL Datenbanken 14 10.06.2008 10:39
SELECT AS geht bei AVG net cyberholic Datenbanken 0 04.05.2006 09:43
[JavaScript] Event Handler in form select - Syntax? winfo_cologne HTML, Usability und Barrierefreiheit 5 29.03.2006 16:47
Schleife nach Tastendruck beenden schnurzli PHP Tipps 2006 7 24.03.2006 18:56
Warum wird die erste Schleife nur einmal durchlaufen ? PHP Tipps 2006 12 03.03.2006 20:04
[Erledigt] While schleife in while schleife = nur ein datensatz?! PHP Tipps 2005-2 9 28.10.2005 12:48
Probleme mit Inner Select Datenbanken 0 19.10.2005 15:22
while schleife beenden PHP Tipps 2005 3 29.03.2005 20:35
IF ELSEIF ELSEIF ELSE mit While Schleife PHP Tipps 2005 9 04.03.2005 23:27
[Erledigt] 2 mal select 1 form PHP-Fortgeschrittene 1 01.09.2004 20:13
selektierter wert in select box anzeigen PHP Tipps 2004 6 30.08.2004 13:49
Schleife PHP Tipps 2004 6 06.08.2004 12:08
Select abfrage in Schleife PHP Tipps 2004 2 20.07.2004 15:37
Prob mit While schleife JEGO PHP Tipps 2004 2 04.06.2004 12:01

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
select schleife, sql select schleife, select for schleife, schleife in select, sql for schleife select, select mit schleife, select in schleife, sql select for schleife, sql schleife select, for schleife in select, select mit for schleife, for schleife select, schleife select, php select schleife, php sql serientermin, sql schleife über select, sql schleife in select, select als schleife, sql datum schleife, sql schleife innerhalb select

Alle Zeitangaben in WEZ +2. Es ist jetzt 06:11 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.