Requete SQL de merde!

QUELQU'UN PEUT-IL FAIRE PASSER CETTE PETITE REQUETE DE L'ETAT "JE MARCHE PAS ET JE FAIS CHIER"

A L'ETAT "JE MARCHE C'eST DE LA BALLE!"

select distinct num_act_centre from act_centre
where act_centre.num_act_centre=select num_act_centre from merc_act_centre where trimestre='1'
OR act_centre.num_act_centre=select num_act_centre from vac_act_centre where periode='noel' or periode='hiver'

Merci , c'esdt cool

23 réponses

Résumé de la discussion

Problème de requête SQL complexe impliquant des sous-requêtes sur trois tables et des conditions sur le trimestre et la période, avec des opérateurs AND, OR et IN. Plusieurs réponses proposent d'utiliser IN pour filtrer num_act_centre avec les sous-requêtes, ou d'encadrer les conditions avec des parenthèses afin de clarifier l'ordre logique. D'autres suggèrent de remplacer le OR par des IN séparément pour chaque sous-ensemble ou d'éviter les OR, et certains discutent des contraintes spécifiques à MySQL ou EasyPHP. En cas de syntaxe incorrecte près des sous-requêtes, le diagnostic porte souvent sur les parenthèses manquantes ou les niveaux de priorité mal gérés, avec une nuance pratique sur les performances.

Bobot (l’IA à votre service)
  1. Au fait j'ai oublié le plus important:

    => ca doit tourner avec EasyPHP donc en Mysql <=
    0
    1. tu as essayé de mettre des AND a la place des "where" après le premier??
      normalement, ca devrait marcher...
      0
      1. ca marche PAS!!!

        =>
        Something is wrong in your syntax près de 'select num_act_centre from merc_act_centre where trimestre='1'
        ' à la ligne 2
        0
        1. Contributeur
          et bien mets des parenthèses, ça aide en général...
          sinon, ça te mets quoi comme message d'erreur????

          ++
          Maily
          0
          1. SELECT distinct num_act_centre from act_centre
            WHERE act_centre.num_act_centre= ( select num_act_centre from merc_act_centre where trimestre='1' )
            OR act_centre.num_act_centre= ( select num_act_centre from vac_act_centre where periode='noel' or periode='hiver' );

            CA DEVRAIT MARCHER! avec AND c'est pareil et meme avec les parenthèse ca marche pas !!!

            Toujours la meme erreur
            =>Something is wrong in your syntax près de 'select num_act_centre from merc_act_centre where trimestre='1')
            ' à la ligne 2
            0
            1. on peut mettre qqc=select >>> select etant un mot reservé ???
              0
              1. Contributeur
                je crois savoir!!

                il faut que tu fasse:
                select num_act_centre, trimestre from merc_act_centre where merc_act_centre.trimestre='1' )

                ++
                Maily
                0
                1. Modérateur
                  Déjà, j'aime pas les 'or'. Pas du tout ;-)
                  C'est pas évident à manipuler.

                  Ensuite voir act_centre.num_act_centre= ( select num_act_centre...) j'aime pas trop non plus. Le select num_act_centre peut renvoyer plusieurs valeurs, mais le '=' attend 1 seule valeur. C'est pas logique.

                  J'aurais fait:

                  SELECT num_act_centre from merc_act_centre where trimestre='1'
                  UNION
                  SELECT num_act_centre from vac_act_centre where periode in ('noel','hiver')
                  0
                  1. j'hallucine vraiment

                    Ya rien moyen de faire avec cette merde meme pas une pauvre Union a la con !!

                    Ya rien a dire d'autre c'est de la derme mais grave
                    !!
                    bon je repart galerer pour trouver une autre sol
                    0
                    1. Contributeur
                      Quel est le message d'erreur ?

                      -= Fu Xuen =-
                      0
                    2. bonjour,
                      A mon avis, c'est pas normal car après un WHERE il y a toujours une expression boolienne.
                      A++
                      0
                    3. Contributeur
                      Certes, mais il me semble que c'est le cas dans l'union formulée ci-dessus.

                      -= Fu Xuen =-
                      0
                    4. @Fu Xuendésolé, je voulais répondre à ben
                      A++
                      0
                  2. ma version:
                    ma version:
                    select distinct num_act_centre from act_centre
                    where act_centre.num_act_centre=
                    (select distinct num_act_centre
                    from merc_act_centre
                    where trimestre='1')
                    OR act_centre.num_act_centre=(select distinct num_act_centre from vac_act_centre where periode='noel' or periode='hiver' )
                    0
                    1. Salut Ben,

                      Je connais pas MySql mais en SQL je remplacerais les "=" précedant tes sous-queries par des IN
                      et ca fera qqchose du genre :
                      "
                      select distinct num_act_centre from act_centre
                      where act_centre.num_act_centre IN
                      (select distinct num_act_centre from merc_act_centre where trimestre='1')
                      OR act_centre.num_act_centre IN
                      (select distinct num_act_centre from vac_act_centre where periode='noel' or periode='hiver' )
                      "

                      Mais j'aime pas bcp le OR non plus

                      ciao

                      dEUS
                      There's no success like failure
                      And failure's no success at all
                      0
                      1. Salut !

                        Je suis d'accord avec toi ! Et je pense (quasi sûr) que ça marche sous MySQL.

                        @+@tous

                        [ Méfiez-vous des filets dérivants de la vie... ]
                        0
                    2. essaye ca

                      select distinct num_act_centre from act_centre
                      where
                      act_centre.num_act_centre in ( select num_act_centre from merc_act_centre where trimestre='1'
                      OR act_centre.num_act_centre in (select num_act_centre from vac_act_centre where periode='noel' or periode='hiver'))

                      cordialement
                      0
                      1. salut

                        dis donc excuser moi un peu là
                        j'avoue que j'ai jamais essayé depuis que j l'avais lu quelque part dans un manuel sur mySql que l'un des limites de mySql c'est de pas accpeter les requêtes imbriquées.

                        alors j'voudrais savoir au juste si oui ou non mySql accepte d'ordinaire les requêtes du genre

                        SELECT *** FROM *** WHERE *** [IN,=,...] (SELECT .....) ?

                        SQL le fait mais mySql c'est pas SQL ou mySql !

                        Merci

                        janvier
                        0
                        1. Moi je suis de ton avis janvier, les sous requetes, ca marche pas sous MySQL!

                          Fat_Cartman,
                          Parce que je le vaux bien... 
                          0
                          1. c'est vrai t'es vraiment fat ? hi ! hi !
                            0
                            1. ha Ha Ha! Mé non, j'aimais bien ce nom (cartman de South park), mais qd G voulu m'inscrire sur caramail y'a quelques années, c'etait deja pris! Mais moi je fais 1m72, 63 kg, alors C pas trop gros!

                              Fat_Cartman,
                              Parce que je le vaux bien... 
                              0
                              1. non pas du tout !

                                moi c'est 1,60m pour 60kg. juste juste quoi !
                                0
                                1. mon - msn messenger c de la merde ca marche pas merci sil vous plait au revoir a bientot
                                  0
                                  1. Contributeur
                                    Mouarf. On ne pourra pas te reprocher de ne pas avoir cherché avec des mots-clefs pertinents :).

                                    -= Fu Xuen =-
                                    0
                                2. select distinct num_act_centre from act_centre
                                  where act_centre.num_act_centre in (select num_act_centre from merc_act_centre where trimestre='1' )
                                  0
                                  • 1
                                  • 2