Partage
  • Partager sur Facebook
  • Partager sur Twitter

[sql]--> Delete qui fonctionne pas

DELETE FROM `SdZ` WHERE `pseudo`=madyn ?

Sujet résolu
    2 avril 2006 à 19:05:54

    Salut tout le monde !

    Voila j'ai une petite requête MySQL qui ne fonctionne pas :

    DELETE FROM `infos_comptes`, `animaux`, `jobs` WHERE `infos_comptes`.`jrs_non_occup` > "15"


    Elle affiche une erreur 1064 :

    Citation : Erreur MySQL 1064

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `infos_comptes`.`jrs_non_occup` > "15"' at line 1



    A noter que l'utilisation des `` ne change rien.

    Merci d'avance :)

    @bientôt ;)
    • Partager sur Facebook
    • Partager sur Twitter
      2 avril 2006 à 19:06:44

      tu mets 3 tables, mets en qu'une.
      • Partager sur Facebook
      • Partager sur Twitter
        2 avril 2006 à 19:07:17

        Je comprend pas ce que tu veux faire, tu veux supprimer dans plusieurs table une entrée ?
        • Partager sur Facebook
        • Partager sur Twitter
          2 avril 2006 à 19:08:12

          Regarde ici

          Et ma syntaxe c'est celle là :

          DELETE FROM t1,t2 USING t1,t2,t3 WHERE t1.id=t2.id AND t2.id=t3.id


          Voila ;)


          Edit :

          Ouai j'veux supprimer une entré dans plusieurs tables.

          Donc mon problème n'est toujours pas réglé :)

          Double-Edit :

          Ah, j'ai modifié mon code :

          DELETE FROM `infos_comptes`, `animaux`, `jobs` USING `infos_comptes` WHERE `infos_comptes`.`jrs_non_occup` > "15"


          Mais cette fois-ci j'obtiens l'erreur :

          Citation : Erreur MySQL

          Unknown table 'animaux' in MULTI DELETE



          Mais la table existe bien :/

          Merci d'avance :)

          @bientôt ;)
          • Partager sur Facebook
          • Partager sur Twitter
            2 avril 2006 à 21:22:31

            assure toi que les noms sont biens identiques.
            • Partager sur Facebook
            • Partager sur Twitter
              2 avril 2006 à 21:41:36

              Ils sont identiques :)

              Merci d'avance ;)

              @bientôt
              • Partager sur Facebook
              • Partager sur Twitter
                2 avril 2006 à 22:29:01

                Nan, mon but est de faire le moins de requêtes possible ^^

                Merci d'avance :)

                @bientôt ;)
                • Partager sur Facebook
                • Partager sur Twitter
                  2 avril 2006 à 22:36:46

                  Le moins de requete possible != Le plus rapide
                  • Partager sur Facebook
                  • Partager sur Twitter
                    3 avril 2006 à 17:19:36

                    Oui mais ça n'empêche pas que j'aimerais avoir la solution à ce problème car ça pourra me servir plus tard

                    Merci d'avance :)

                    @bientôt ;)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      3 avril 2006 à 18:59:37

                      Pour faire quoi, des requetes lentes (et non conformes SQL) ? :p
                      • Partager sur Facebook
                      • Partager sur Twitter
                        3 avril 2006 à 21:59:46

                        C'est écrit dans le manuel MySQL alors c'est que c'est conforme alors je veux qu'on m'aide :p

                        Merci d'avance :)

                        @bientôt ;)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          3 avril 2006 à 22:36:37

                          C'est pas conforme SQL.
                          Mais "ca marche" sous MySQL parce que MySQL ne respecte pas vraiment les normes SQL, ca on est d'accord :)

                          Quand tu m'auras donné tes motivations, je commencerai à me pencher sur ton problème, mais pas avant :D
                          • Partager sur Facebook
                          • Partager sur Twitter
                            3 avril 2006 à 22:41:31

                            Si tu veux faire ça, crée une jointure et fais des RULES sur le DELETE, ensuite tu fais simplement DELETE FROM v_* WHERE ... pour le virer.

                            Ah oui, c'est vrai, MySQL respecte pas les standards :-°

                            Bah ... Tant pis pour toi ;)

                            Comme je suis gentil, je te donne un conseil quand même: Fais trois requêtes.

                            Mais si tu y tiens vraiment, tu as oublié de faire la jointure ( non normalisée !! ) entre les tables ( t1.x = t2.x AND t2.y = t3.y ).
                            • Partager sur Facebook
                            • Partager sur Twitter
                              3 avril 2006 à 23:52:01

                              J'ai réussis à régler le problème !

                              Et c'est assez beau et court comme résultat !

                              Merci à vous !!

                              Bonne nuit ;)
                              • Partager sur Facebook
                              • Partager sur Twitter
                                4 avril 2006 à 19:08:58

                                Vous croyez qu'il a fait 3 requetes ? En tout cas ca correspond au beau et court :)

                                Par contre si il l'a fait en une seule requete, ca correspond plus à moche et long mais bon :-°
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  5 avril 2006 à 16:40:04

                                  winzou: T'as oublié "et lent" pour le "en une seule requête" ^^:D
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    5 avril 2006 à 17:22:45

                                    Bah moi je parie que le SdZ, pour afficher que "6 requêtes faites" il en fait des bien plus longues que moi :p

                                    Ensuite si j'aurais séparé les requêtes j'aurais du en faire 4...

                                    Voici mon code :
                                    DELETE FROM `infos_comptes`, `animaux`, `job` USING `infos_comptes`, `animaux`, `job` WHERE `infos_comptes`.`jrs_non_occup`>15 AND `infos_comptes`.`conf`=0


                                    Bonne nuit ;)

                                    @bientôt !
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      5 avril 2006 à 17:31:36

                                      Madyn, en SQL, il y a ce qu'on appelle les clés étrangères et sa clause ON DELETE (CASCADE|SET NULL|SET DEFAULT|RESTRICT|NO ACTION).

                                      Il suffit de le mettre à CASCADE et le tour est joué ;)

                                      Sur le SdZ, on fait ça ( enfin sur la version de dev vu que pour le moment, le SdZ tourne sous MySQL :x ), donc en gros, on ferait:

                                      DELETE FROM infos_compte WHERE jrs_non_occup > 15 AND conf = 0;


                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        5 avril 2006 à 17:38:09

                                        madyn oui il en fait des bien plus longues, et tu vois le résultat : on a eu énormément de peine à avoir un site rapide ! Elles sont longues parce que compliquées, mais pas du tout parce qu'on veut mettre 36 requetes en une, c'est complètement débile ca et ya que toi qui veut le faire :D

                                        Les seules optimisations que j'ai fait ces derniers temps, c'était justement d'alleger au max les requetes. Résultat : un site bien plus rapide.

                                        Un bon exemple ici

                                        Mais bon, si tu t'obstine à pas me croire que 3 delete sont plus rapide que 1 seul, tant pis pour toi. C'est pas mon problème à la limite.
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          5 avril 2006 à 18:00:11

                                          J'ai dis que si j'aurais pas fais une requête j'aurais du en faire 4 alors chut :p
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            5 avril 2006 à 18:55:43

                                            Et nous on te dit que faire 4 requetes c'est ET plus simple ET plus rapide.

                                            T'es borné un peu hein :D
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              5 avril 2006 à 18:59:57

                                              Pourquoi c'est plus rapide ?
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                5 avril 2006 à 19:04:48

                                                Parce que c'est des requetes beaucoup plus simple (donc rapide !), cf mon exemple sur le livre d'or (lien dans mon post au dessus), c'est le même esprit
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  5 avril 2006 à 19:07:36

                                                  Jusqu'à aujourd'hui je pensais le contraire... :lol: Merci!
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    5 avril 2006 à 19:59:22

                                                    Et avec PostGreSQL c'est encore plus rapide :-°:p
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      5 avril 2006 à 22:06:44

                                                      Sauf que el listage de 10 membres pour l'instant ça va, mais quand y'en aura beaucoup plus bah ça sera mieu ma solution !

                                                      Et il aurait ausis fallu que je apsse par une mise en array ainsi qu'un boucle (pareil, pour l'instant avec 10 mebers ça va mais plus tard...)

                                                      @bientôt ;)
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter

                                                      [sql]--> Delete qui fonctionne pas

                                                      × 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