• [^] # Re: peut-être une piste (autre)

    Posté par . En réponse au message SQL toujours : requête sur une non-table..... Évalué à 1.

    Bon, c'est pas encore clair dans ma tête, mais ça pourraît donner matière à réfléchir.
    je suppose que ta table, que je nomme période, comporte les colonnes id, userid, debut, fin et param.

    Déterminer si des périodes se suivent est assez simple : il suffit de faire un produit ensembliste restrictif portant sur userdid et param.
    D'où naturellement la requête suivante :

    SELECT p1.id, p1.fin, p2.debut, date_mi( p1.fin, p2.debut)+1 AS intervalle
    FROM periode AS p1, periode AS p2
    WHERE p1.userid=1 AND p1.param=p2.param AND p1.fin<p2.debut
    ORDER BY intervalle DESC;

    N.B1 : la restriction p1.fin<p2.debut permet de ne pas sélectionner tous les résultats possibles (pas intéressants).
    N.B2 : les intervalles qui se suivent directement sont repérables par le 0 pour la colonne intervalle dans la requête ci-dessus.
    N.B3 : avec la jointure sur un index (supposé) de id et malgré le produit ensembliste, cela ne devrait pas être trop couteux en performances ; je doute que chaque utilisateur en arrive à 365 entrées par exemple !

    A priori, il ne resterait donc plus qu'à incorporer cette requête dans un trigger pour que ça fasse l'affaire !

    Bon courage. Si j'ai dispersé inutilement tes efforts, désolé !