phpbar.de logo

Mailinglisten-Archive

[php] MySQL: Luecken in Intervallen finden

[php] MySQL: Luecken in Intervallen finden

Jens Vonderheide php_(at)_phpcenter.de
Wed, 11 Sep 2002 16:47:46 +0200


Hallo Wolfgang,

> Zunächst solltest du für deine Tabelle einen Primärschlüssel erzeugen:

Klar, der ist auch drin. Ich habe ihn nur weggelassen, um das ganze
übersichtlicher zu machen.

> Die Intervalle findest du so:
>
> Select a.id_common,a.end as start, b.start as end
> from spans as a
> LEFT JOIN spans as b on a.id_common = b.id_common
> where a.end < b.start group by a.end

Das haut nicht ganz hin:

CREATE TABLE spans (
   id_common int unsigned not null,
   start     date not null,
   end       date not null
);
INSERT INTO spans VALUES (1, '2000-01-01', '2000-07-31');
INSERT INTO spans VALUES (1, '2000-07-31', '2000-09-30');
INSERT INTO spans VALUES (1, '2001-01-01', '2000-12-31');

Deine Query liefert dann
+-----------+------------+------------+
| id_common | start      | end        |
+-----------+------------+------------+
|         1 | 2000-07-31 | 2001-01-01 |
|         1 | 2000-09-30 | 2001-01-01 |
|         1 | 2000-12-31 | 2001-01-01 |
+-----------+------------+------------+
3 rows in set (0.00 sec)

Ich bekomme also die Zeiträume zwischen allen Intervallen, nicht nur
zwischen benachbarten.

Trotzdem danke, vielleicht komme ich mit dem Ansatz selbst weiter :-)

Jens


php::bar PHP Wiki   -   Listenarchive