<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Folgendes Problem mit einem SQL-Select lösbar?</title>
    <link>http://forum.geizhals.at/feed.jsp?id=450410</link>
    <description>Geizhals-Forum</description>
    <item>
      <title>Re: Schnellschußlösung...</title>
      <link>http://forum.geizhals.at/t450410,3712424.html#3712424</link>
      <description>so hab ich es eh schon gelöst-&lt;br&gt;Ich hab' mir gedacht, vielleicht hat wer eine Lösung ohne zusätzliche Funktion und ohne zusätzlich Tabelle mit allen Tagen.&lt;br&gt;&lt;br/&gt;</description>
      <pubDate>Mon, 16 Oct 2006 13:47:58 GMT</pubDate>
      <guid>http://forum.geizhals.at/t450410,3712424.html#3712424</guid>
      <dc:creator>Infosauger</dc:creator>
      <dc:date>2006-10-16T13:47:58Z</dc:date>
    </item>
    <item>
      <title>Schnellschußlösung...</title>
      <link>http://forum.geizhals.at/t450410,3712028.html#3712028</link>
      <description>Hi !&lt;br&gt;&lt;br&gt;Grundsätzlich hättest mehrere Möglichkeiten, das zu lösen - auf die schnelle würden mir recursive views einfallen (können aber AFAIK net viele DBs) - oder mehrere Möglichkeiten einer stored procedure.&lt;br&gt;&lt;br&gt;In der Postgres wäre das recht einfach (achtung, noch net sehr elegant formuliert):&lt;br&gt;&lt;br&gt;&lt;div class=code&gt;&lt;pre&gt;&#xD;
CREATE OR REPLACE FUNCTION maxdate(text ,text ) returns date AS '&#xD;
DECLARE&#xD;
        TABELLE ALIAS FOR $1;&#xD;
        SPALTE ALIAS FOR $2;&#xD;
&#xD;
        aktdate DATE := NOW();&#xD;
        found BOOLEAN;&#xD;
        wochentag INT;&#xD;
        erg RECORD;&#xD;
&#xD;
        query TEXT;&#xD;
&#xD;
BEGIN&#xD;
        SELECT INTO wochentag EXTRACT(DOW FROM aktdate);&#xD;
&#xD;
        IF wochentag = 6&#xD;
        THEN&#xD;
                aktdate := aktdate - 1;&#xD;
                wochentag := 5;&#xD;
        END IF;&#xD;
&#xD;
        LOOP&#xD;
                IF wochentag = 0&#xD;
                THEN&#xD;
                        aktdate := aktdate - 2;&#xD;
                        wochentag := 5;&#xD;
                END IF;&#xD;
&#xD;
                found = false;&#xD;
&#xD;
                query := ''SELECT EXISTS( '' ||&#xD;
                                '' SELECT ''|| SPALTE ||&#xD;
                                '' FROM '' || TABELLE ||&#xD;
                                '' WHERE '' || SPALTE ||&#xD;
                                '' =  ''&#xD;
                                || '''''''' || aktdate || '''''''' ||&#xD;
                                '') AS gefunden'';&#xD;
&#xD;
                --raise notice ''%'',query;&#xD;
                FOR erg IN EXECUTE query LOOP&#xD;
                        found := erg.gefunden;&#xD;
                END LOOP;&#xD;
&#xD;
                if found = false&#xD;
                THEN&#xD;
                        EXIT;&#xD;
                END IF;&#xD;
&#xD;
                aktdate := aktdate - 1;&#xD;
                wochentag := wochentag - 1;&#xD;
        END LOOP;&#xD;
&#xD;
        return AKTDATE;&#xD;
END;&#xD;
' VOLATILE language plpgsql;&#xD;
&lt;/pre&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;Mit einem &lt;br&gt;&lt;br&gt;&lt;div class=code&gt;&lt;pre&gt;&#xD;
SELECT maxdate('datuemer','b');&#xD;
&lt;/pre&gt;&lt;/div&gt;&lt;br&gt;würde er dann das höchste Datum suchen, daß&lt;br&gt; - ein Werktag ist und&lt;br&gt; - nicht in der Spalte b in der Tabelle Datuemer auftaucht.&lt;br&gt;&lt;br&gt;cu&lt;br&gt;linux_sucks.&lt;br/&gt;</description>
      <pubDate>Mon, 16 Oct 2006 11:53:08 GMT</pubDate>
      <guid>http://forum.geizhals.at/t450410,3712028.html#3712028</guid>
      <dc:creator>Linux_Sucks</dc:creator>
      <dc:date>2006-10-16T11:53:08Z</dc:date>
    </item>
    <item>
      <title>Re(3): Folgendes Problem mit einem SQL-Select lösbar?</title>
      <link>http://forum.geizhals.at/t450410,3711558.html#3711558</link>
      <description>achso dann hab ich dich falsch verstanden.. am einfachsten wär bei einer sql-lösung dann wohl eine zweite tabelle in der alle tage sind.. davon die feiertage und das wochenende abziehen und anschließend den tag mit der minimalsten zeitdifferenz zwischen heute eben diesem tag auswählen..&lt;br&gt;&lt;br&gt;wenn du keine zusätzlichen tabellen anlegen kannst bleibt dir wohl nichts erspart als das ganze in php oder was auch immer auszuprogrammieren..&lt;br/&gt;</description>
      <pubDate>Mon, 16 Oct 2006 09:41:59 GMT</pubDate>
      <guid>http://forum.geizhals.at/t450410,3711558.html#3711558</guid>
      <dc:creator>promillo</dc:creator>
      <dc:date>2006-10-16T09:41:59Z</dc:date>
    </item>
    <item>
      <title>Re(2): Folgendes Problem mit einem SQL-Select lösbar?</title>
      <link>http://forum.geizhals.at/t450410,3711210.html#3711210</link>
      <description>Ich hab' keine Tabelle mit allen Tagen, eben nur die Tabelle mit den Feiertagen.&lt;br&gt;&lt;br&gt;Also, wenn ich z.B. an einem Sonntag das Select starte, dann will ich den Freitag davor, ausser, der ist in der Tabelle, dann den Donnerstag davor (und sollte der auch in der Tabelle sein, dann den Mittwoch, usw.).&lt;br&gt;Ich hab keine Tabelle, mit allen Tagen, sondern nur eine Tabelle mit den Tagen, die ich nicht haben will (Feiertage und andere).&lt;br&gt;&lt;br&gt;Eine Lösung mit einem SELECT ohne einer Schleife fällt mir nicht ein.&lt;br&gt;&lt;br/&gt;</description>
      <pubDate>Mon, 16 Oct 2006 06:39:32 GMT</pubDate>
      <guid>http://forum.geizhals.at/t450410,3711210.html#3711210</guid>
      <dc:creator>Infosauger</dc:creator>
      <dc:date>2006-10-16T06:39:32Z</dc:date>
    </item>
    <item>
      <title>Re: Folgendes Problem mit einem SQL-Select lösbar?</title>
      <link>http://forum.geizhals.at/t450410,3710354.html#3710354</link>
      <description>du könntest die minimale differenz zwischen heute und dem gesuchten arbeitstag auswählen.. allerdings musst auch eine untergrenze irgendwie einbauen sonst sucht er dir wahrscheinlich tage bis ins mittelalter &lt;img src="smile.gif" width="16" height="19" align="absmiddle" alt=":-)"/&gt;&lt;br/&gt;</description>
      <pubDate>Sun, 15 Oct 2006 17:27:46 GMT</pubDate>
      <guid>http://forum.geizhals.at/t450410,3710354.html#3710354</guid>
      <dc:creator>promillo</dc:creator>
      <dc:date>2006-10-15T17:27:46Z</dc:date>
    </item>
    <item>
      <title>Re: Folgendes Problem mit einem SQL-Select lösbar?</title>
      <link>http://forum.geizhals.at/t450410,3710391.html#3710391</link>
      <description>du könntest die minimale differenz zwischen heute und dem gesuchten arbeitstag auswählen.. allerdings musst auch eine untergrenze irgendwie einbauen sonst sucht er dir wahrscheinlich tage bis ins mittelalter &lt;img src="smile.gif" width="16" height="19" align="absmiddle" alt=":-)"/&gt;&lt;br&gt;&lt;br&gt;montag-freitag könntest mit "between" oder "in" im where teil lösen.. für die feiertage müsstest dann entweder eine neue tabelle basteln oder für jeden feiertag eine eigene bedingung.. hört sich wahrscheinlich schlimmer an als es is.. &lt;a href="http://de.wikipedia.org/wiki/Österreichische_Feiertage" rel="noopener" target="_blank"&gt;http:/&lt;wbr/&gt;/&lt;wbr/&gt;de.wikipedia.org/&lt;wbr/&gt;wiki/&lt;wbr/&gt;Österreichische_Feiertage&lt;/a&gt; &lt;br/&gt;</description>
      <pubDate>Sun, 15 Oct 2006 17:27:46 GMT</pubDate>
      <guid>http://forum.geizhals.at/t450410,3710391.html#3710391</guid>
      <dc:creator>promillo</dc:creator>
      <dc:date>2006-10-15T17:27:46Z</dc:date>
    </item>
    <item>
      <title>Re: Folgendes Problem mit einem SQL-Select lösbar?</title>
      <link>http://forum.geizhals.at/t450410,3708920.html#3708920</link>
      <description>Bin kein echter SQL experte, würds wie folgt lösen:&lt;br&gt;&lt;br&gt;Neue Tabelle mit allen Arbeitstagen von heute bis 2020 anlegen. Da hast du das Problem der Österreichischen Feiertage mal zu lösen... &lt;br&gt;&lt;br&gt;Und dann ein&lt;br&gt;&lt;br&gt;SELECT Min(Arbeitstage.Arbeitstag) AS [Min von Arbeitstag]&lt;br&gt;FROM Arbeitstage LEFT JOIN Tage ON Arbeitstage.Arbeitstag = Tage.Tage&lt;br&gt;where (((Tage.Tage) Is Null));&lt;br&gt;&lt;br&gt;und du hast den frühesten Arbeitstag, der nicht in der "Tage" Tabelle ist.&lt;br&gt;&lt;br&gt;mfg&lt;br&gt;lukas&lt;br/&gt;</description>
      <pubDate>Sat, 14 Oct 2006 21:50:50 GMT</pubDate>
      <guid>http://forum.geizhals.at/t450410,3708920.html#3708920</guid>
      <dc:creator>Paulas_Papa</dc:creator>
      <dc:date>2006-10-14T21:50:50Z</dc:date>
    </item>
    <item>
      <title>Folgendes Problem mit einem SQL-Select lösbar?</title>
      <link>http://forum.geizhals.at/t450410,3704592.html#3704592</link>
      <description>Folgende Situation: Ich hab eine Tabelle mit mehrern Daten ("Datümern", also Datum der Feiertage, und andere Tage).&lt;br&gt;&lt;br&gt;Nun möchte ich mit einem Select das größte Datum &amp;lt;= aktuelles Datum, das ein Werktag ist (Mo-Fr) und nicht in der gegebenen Tabelle steht.&lt;br&gt;&lt;br&gt;Einfache Lösung wäre, solange vom aktuellen Datum einen Tag wegzählen, bis man einen Tag gefunden hat. Fällt jemand dazu auch ein SQL-Select-Statement ein?&lt;br/&gt;</description>
      <pubDate>Thu, 12 Oct 2006 13:24:11 GMT</pubDate>
      <guid>http://forum.geizhals.at/t450410,3704592.html#3704592</guid>
      <dc:creator>Infosauger</dc:creator>
      <dc:date>2006-10-12T13:24:11Z</dc:date>
    </item>
  </channel>
</rss>
