Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problèmes avec les dates

(NOW() - INTERVAL 2 MONTH)...

Sujet résolu
    6 mai 2011 à 10:03:57

    Bonjour à vous les Zéros.

    J'ai posté hier mon premier soucis ICI

    En gros j'aimerai afficher les personnes qui n'ont pas eu de visites depuis AU MOINS 2 MOIS.

    En voilà une requête

    SELECT P.* 
    FROM personne AS P
    LEFT JOIN compte_rendu AS CR 
      ON (P.id_pers = CR.id_pers 
          AND date_visite > now() - INTERVAL 2 MONTH)
    WHERE CR.id_cr IS NULL;
    



    Sauf que cette requête n'affiche pas les visites de 2011 (du coup jusqu'au 6 mars j'ai des visites qui devraient s'afficher...)

    J'ai testé plusieurs solutions, et rien de très terrible...

    Et d'ailleurs, dès que je veux faire une sous requête j'ai obligatoirement le droit à cette erreur sur PhpMyAdmin : "#1317 - Query execution was interrupted"


    Si une âme charitable puisse m'aider dans ce monde fou des requêtes SQL... ça me ravira mon vendredi!

    Merci d'avance!
    • Partager sur Facebook
    • Partager sur Twitter
      6 mai 2011 à 10:30:53

      Hey c'est bizarre ma foi. Tu peux faire un jeu de données de test ?
      • Partager sur Facebook
      • Partager sur Twitter
        6 mai 2011 à 10:52:54

        NOM PERSONNE | ADRESSE | CP | VILLE | TÉLÉPHONE | DERNIÈRE VISITE | COMMENTAIRE

        GROSS | 3 PLACE DES ARCADES | 01100 |BELLIGNAT |0474737916 |2008-07-10 | //
        MOIROUD | | 73300 |ST JEAN DE MAURIENNE |0479640093 |2010-01-27 |
        Monzain |85 Allée des Cerisiers |42800 |GENILAC |0477757514 |2008-08-21 |
        PERRIN |PLACE DE LA CASCADE |38450 |LE GUA |0476723192 |2009-05-26 |

        Bon voilà en gros...

        Sachant que ça ne récupère même pas la dernière date de visite, mais la première... (Même avec un MAX(date_visite)) ....
        • Partager sur Facebook
        • Partager sur Twitter
          6 mai 2011 à 11:22:20

          vérifie voir le type de la colonne si c'est bien une date...
          • Partager sur Facebook
          • Partager sur Twitter
            6 mai 2011 à 11:23:45

            C'est bien un format date...
            • Partager sur Facebook
            • Partager sur Twitter
              6 mai 2011 à 11:27:06

              Fais un dump de ta base (mais sans les colonnes perso style nom et adresse, garde juste les id et les dates), pour ça tu fais "CREATE TABLE machin_copie AS SELECT les colonnes que tu veux FROM machin", et mets les tables en PJ...
              • Partager sur Facebook
              • Partager sur Twitter
                6 mai 2011 à 11:55:58

                Si je fais ça, j'ai bien des dates en 2011 (mais la date la plus récente dans ta table est en janvier)... donc la requête marche on dirait !

                mysql> select date_visite 
                from visite where id_pers in (
                SELECT P.id_pers FROM personne AS P
                 LEFT JOIN visite AS CR    
                   ON (P.id_pers = CR.id_pers        
                   AND date_visite > now() - INTERVAL 2 MONTH) 
                WHERE CR.id_visite IS NULL) 
                order by date_visite desc limit 10;
                +-------------+
                | date_visite |
                +-------------+
                | 2011-01-14  |
                | 2011-01-14  |
                | 2011-01-14  |
                | 2011-01-14  |
                | 2011-01-14  |
                | 2011-01-14  |
                | 2011-01-13  |
                | 2011-01-13  |
                | 2011-01-13  |
                | 2011-01-13  |
                +-------------+
                
                • Partager sur Facebook
                • Partager sur Twitter
                  6 mai 2011 à 12:01:54

                  Réponse : #1317 - Query execution was interrupted

                  Je dois avoir un sacré soucis dans ma BDD... je vais tester sur la visite copie...
                  • Partager sur Facebook
                  • Partager sur Twitter
                    6 mai 2011 à 12:11:20

                    LOL ok. C'est tellement lent que ça timeout... tu as quoi comme index ?
                    • Partager sur Facebook
                    • Partager sur Twitter
                      6 mai 2011 à 12:20:45

                      Toutes mes clés étrangères sont en index...

                      Sachant que mon #1317 - Query execution was interrupted s'affiche au bout de 3 secondes...
                      • Partager sur Facebook
                      • Partager sur Twitter
                        6 mai 2011 à 12:34:21

                        Oui 3 secondes c'est déjà excessivement lent...

                        Fais voir les SHOW CREATE TABLE de tes tables (ou fais un dump sans les données)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          6 mai 2011 à 14:30:01

                          C'est bon, j'ai trouvé l'erreur... J'ai bien l'impression que des données dans ma table ne passaient pas.... J'ai fait un DELETE des mes dates, j'ai seulement gardé les lignes de 2011, et la requête est passée comme une lettre à La Poste... J'ai juste à vérifier mes données, et le tour est joué!


                          En tout cas, merci beaucoup du temps passé...

                          • Partager sur Facebook
                          • Partager sur Twitter

                          Problèmes avec les dates

                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                          • Editeur
                          • Markdown