Trouver une valeur en mysql d'après une table

Bonjour,
Je cherche depuis presque 2 jours à résoudre un problème sur ma page informatique, et du coup je viens à vous pour voir si quelqu'un arriverai à résoudre ce calcul qui pourtant pourrait paraître simple.
J'ai fais un petit tableau pour bien visualisé.
PS: Pour cela qui aime les casses tête c'est un plaisir je pense.

Je souhaite savoir combien de matériel "23" sont utilisés au maximal du 2013-02-04 9h au 2013-02-23 8h? (en mysql)

Voici le tableau (qui représente la table):
https://www.zupimages.net/

3 réponses

  1. Quand tu dis maximum tu veux dire "combien de materiel on été utilisé en tout entre tel date et tel date" ou tu souhaite connaitre le jour où il y a eu le plus d'utilisation ?

    Sinon en sql tu peux te servire de DATE() > ta_date
    0
    1. Je veux dire par la que je souhaite savoir le nombre maximum de matériel utilisé en même temps. Ce qui permet de savoir la quantité qu'il faut au minimum pour pouvoir répondre a la demande.
      Donc connaitre le jour où il y a eu le plus d'utilisation peut être utile si tu sais comment le déterminer.

      Ce que tu me donnes c'est le cas?
      0
      1. Bonjour,

        On pourrait sans doute essayer quelque chose de ce genre :
        SELECT MAX(nombre) FROM (
            SELECT d.jour, count(*) as nombre
            FROM table t
            INNER JOIN (
                 SELECT 1 as jour UNION ALL
                 SELECT 2 UNION ALL
                 SELECT 3 UNION ALL
                 SELECT 4 UNION ALL
                 SELECT 5 UNION ALL
                 SELECT 6 UNION ALL
                 SELECT 7 UNION ALL
                 SELECT 8 UNION ALL
                 SELECT 9 UNION ALL
                 SELECT 10 UNION ALL
                 SELECT 11 UNION ALL
                 SELECT 12 UNION ALL
                 SELECT 13 UNION ALL
                 SELECT 14 UNION ALL
                 SELECT 15 UNION ALL
                 SELECT 16 UNION ALL
                 SELECT 17 UNION ALL
                 SELECT 18 UNION ALL
                 SELECT 19 UNION ALL
                 SELECT 20 UNION ALL
                 SELECT 21 UNION ALL
                 SELECT 22 UNION ALL
                 SELECT 23 UNION ALL
                 SELECT 24 UNION ALL
                 SELECT 25 UNION ALL
                 SELECT 26 UNION ALL
                 SELECT 27 UNION ALL
                 SELECT 28
            ) d ON MAKEDATE(2014, 31 + d.jour) between t.date_debut AND t.date_fin
            WHERE t.Materiel = 23
            GROUP BY d.jour
            ORDER BY d.jour
        ) nombreParJour
        


        Si tu enlèves la première et la dernière ligne, tu as pour chaque jour le nombre de matériel de type 23 qui est sorti.
        Si tu rajoutes ces deux lignes, tu récupères juste la valeur maximale.

        Xavier
        0