Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur sur une requête sql

La commande sql ne se termine pas correctement

Sujet résolu
    19 novembre 2020 à 16:44:31

    Bonjour,

    J'ai l'erreur suivante sur le SGBD Oracle : ORA-00933: la commande SQL ne se termine pas correctement et je ne comprends pas pourquoi j'ai cette erreur.

    Voici la requête :

    select name, organization
    from country, isMember join isMember on (country.code = isMember.country)
    order by name, organization
    UNION 
    (select code,name
    from country
    MINUS
    (select country, name from isMember, Country where ORGANIZATION is not null group by country, name))
    ;

    Pouvez-vous m'aider ?

    EDIT Benzouye : Coloration syntaxique SQL

    -
    Edité par Benzouye 19 novembre 2020 à 17:02:14

    • Partager sur Facebook
    • Partager sur Twitter
      19 novembre 2020 à 17:11:30

      Bonjour,

      Peux-tu nous expliquer ce que tu cherches à faire exactement ?

      Et nous donner la structure des deux tables en question ...

      -
      Edité par Benzouye 19 novembre 2020 à 17:18:13

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        19 novembre 2020 à 17:12:27

        il y a des erreurs de copier/coller non ? (les isMember surtout)
        • Partager sur Facebook
        • Partager sur Twitter
          19 novembre 2020 à 17:41:43

          Merci de votre réponse,

          Voici la structure :

          Enfin je cherche à faire cette requête : Pour tous les pays, lister les organisations dont ils sont membres. ATTENTION, demande
          spécifique : tous 1 les pays doivent apparaître dans la liste, même s’ils ne sont membres d’aucune organisation.

          Voici ma requête :

          select name, organization
          from country join isMember on (country.code = isMember.country)
          order by name, organization
          UNION 
          (select code,name
          from country
          MINUS
          (select country, name from isMember, Country where ORGANIZATION is not null group by country, name))
          ;



          La première partie de union est censée donner les pays qui sont dans des organisations. Puis la deuxième partie du union donne les pays qui sont dans la table country mais qui ne sont pas dans isMember (= ne sont pas membres d'une organisation).



          -
          Edité par AlexandreDmrqz 19 novembre 2020 à 17:45:26

          • Partager sur Facebook
          • Partager sur Twitter
            19 novembre 2020 à 17:49:02

            AlexandreDmrqz a écrit:

            Pour tous les pays, lister les organisations dont ils sont membres. tous les pays doivent apparaître dans la liste, même s’ils ne sont membres d’aucune organisation

            Si à partir de cet énoncé tu as fais la requête montré plus tôt c'est qu'il est grand temps de (re)voir ton cours SQL ... Les principes de bases ne sont pas maîtrisés ... Je pense notamment aux jointures, aux alias, aux jointures externes ...

            SELECT
            	C.code,
            	C.name,
            	O.abbreviation,
            	O.name
            FROM
            	Country C
            		LEFT JOIN isMember M
            			ON C.code = M.country
            		LEFT JOIN Organization O
            			ON M.organization = O.abbreviation
            ORDER BY C.code, O.abbreviation



            • Partager sur Facebook
            • Partager sur Twitter
            Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
              19 novembre 2020 à 18:15:44

              Bonjour,

              Oui je me me rends bien compte que ma requête était très très farfelue. Au départ j'avais fait une jointure. Sauf que pour moi les pays qui ne sont pas membres sont dégagés du résultat. Et j'ai d'ailleurs l'impression qu'avec votre requête c'est le cas aussi

              • Partager sur Facebook
              • Partager sur Twitter
                19 novembre 2020 à 18:27:11

                AlexandreDmrqz a écrit:

                j'ai d'ailleurs l'impression qu'avec votre requête c'est le cas aussi

                Non, puisque j'utilise une jointure externe (ici LEFT JOIN) qui a l'avantage de ne pas rendre obligatoire la jointure (et donc l'existence d'une relation avec organization).

                https://openclassrooms.com/fr/courses/1959476-administrez-vos-bases-de-donnees-avec-mysql/1963612-jointures

                • Partager sur Facebook
                • Partager sur Twitter
                Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                  19 novembre 2020 à 18:51:42

                  Ok merci. J'avais en effet des lacunes sur les jointures externes. Merci pour votre temps j'ai bien compris.

                  Bonne journée,

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Erreur sur une requête sql

                  × 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