Rolf B: mysql: Designfrage / nochmal eine Rückfrage

Beitrag lesen

Hallo Pit,

zu <,> vs <=,>= siehe meine Antwort von eben an Matthias. Das musst Du so wählen, wie es zu deinen Anforderungen passt.

Im SQL kannst Du das so machen:

SELECT t.Anfang, t.Ende, 
       (case when t.Anfang > $suchanfang then t.anfang else $suchanfang) as XAnfang,
       (case when t.Ende   < $suchende   then t.ende   else $suchende  ) as XEnde,
       -- weitere spalten
FROM termine t
WHERE t.Anfang <= $suchende AND t.Ende >= $suchanfang 

Nimm das als Pseudocode, ich wollte nur zeigen wie du berechnete Spalten erzeugst und benennst. MAX und MIN als Funktionen kannst Du nicht verwenden, die sind für GROUP BY reserviert, daher das CASE-Konstrukt. Ich habe keine MYSQL Funktion gefunden, die Maximum oder Minimum zweier beliebiger Werte liefert. $suchanfang und $suchende stehen für PHP-Variablen, die diese Werte enthalten - die darfst Du natürlich nicht direkt aus dem HTML Formular übernehmen sondern musst sie entsprechend validieren. Ggf. auch umwandeln, je nach dem, wie Du deine Zeitpunkte in der Table speicherst. Und wenn Du diese Abfrage mehrfach machen musst, lohnt natürlich immer ein prepared statement.

Rolf

--
sumpsi - posui - clusi