Partage
  • Partager sur Facebook
  • Partager sur Twitter

mariaDB et les alias de table

Sujet résolu
    27 septembre 2022 à 11:20:15

    Bonjour à tous,
    Je reviens vers vous à propos de mes problèmes d’alias de table avec Marie ADB & l'utilisation de json_extract.
    Je souhaite réaliser la requête suivante : 
    je sélectionne la donnée qui, si elle n’es pas vide, est a donnée du row x, si elle est vide je sélectionne la donnée du row 0.
    Pour ce faire, j’ai écrit la requête suivante qui fonctionne parfaitement sous MySQL. Malheureusement mon serveur ne supporte que Marie ADB , qui a de gros problèmes avec un certain nombre de fonctions MySQL : 
    SELECT IF(c.data1 != "", json_extract(c.data1, "$.RTT") AS Ressource1, json_extract(d.data1, "$.RTT") AS Ressource1), init.ClientId, init.id 
    FROM init 
    LEFT JOIN table1 AS c ON c.id = 6 
    LEFT JOIN table1 AS d ON d.id = 0 
    WHERE init.id = 2

    Requête qui fonctionne bien avec Mysql mais pas avec MariaDB

    Requête qui me renvoie l'erreur suivante :
    #1064 - Erreur de syntaxe près de 'AS Ressource1, json_extract(d.deata1, "$.RTT") AS Ressource...' à la ligne 1

    Ma question est : comment résoudre ce problème de non acceptation des alias avec json_extract sous mariaDB

    D'avance merci pour vos lumières.

    • Partager sur Facebook
    • Partager sur Twitter
      27 septembre 2022 à 17:27:32

      Bonjour,

      bronson a écrit:

      Requête qui fonctionne bien avec Mysql mais pas avec MariaDB

      Je suis surpris que cette requête fonctionne sur MySQL, car la syntaxe correcte est :

      SELECT
      	IF(
      		c.data1 != "",
      		json_extract(c.data1, "$.RTT"),
      		json_extract(d.data1, "$.RTT")
      	) AS Ressource1,
      	init.ClientId,
      	init.id
      FROM init
      LEFT JOIN table1 AS c ON c.id = 6
      LEFT JOIN table1 AS d ON d.id = 0
      WHERE init.id = 2

      L'alias est donné pour tout le IF, pas à l'intérieur de celui-ci ...

      -
      Edité par Benzouye 27 septembre 2022 à 17:33:01

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        28 septembre 2022 à 11:13:22

        Merci pour ton retour,

        Je regarde ceci dans la journée, je te confirme que cette requête fonctionnait parfaitement avec Mysql 5.7

        Bonne journée

        Je viens de tester ta soluce cela fonctionne parfaitement et te re-confirme qu'avec Mysql ma solution fonctionnait parfaitement ce qui permet d'avoir 2 alias selon le résultat du if, 

        Encore mes remerciement 

        Maintenant je bute sur un nouveau PB cette requête doit extraire des textes accentués et ponctués, parfois ces textes sont longs voire très long.

        Json_quote be résous rien quand il faut " jsoniser " <br>, \n, \r, -, —, •,… ?

        Les textes "non-jsonisés" ==> retour nul lors de l'extraction !

        Encore une fois d'avance merci !

        -
        Edité par bronson 28 septembre 2022 à 16:37:29

        • Partager sur Facebook
        • Partager sur Twitter
          1 octobre 2022 à 17:26:21

          Je n'avais pas vu ton edit...

          Peux-tu détailler le problème des textes accentués/ponctués ?

          Cela peut ressembler à un problème d'encodage, il faudrait commencer par vérifier l'encodage des colonnes en base, et celui de ton programme ou de la page Web...

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            16 octobre 2022 à 13:09:43

            Merci pour ton retour,

            j'ai réglé le pb qui venait du fichier CSV fourni par le client qui devait dater des années 90, lis m'en a fourni un nouveau plus récent et  tout fonctionne correctement.

            Je n'ai pas cherché plus loin puisque ça fonctionnait !

            Cordialement

            • Partager sur Facebook
            • Partager sur Twitter

            mariaDB et les alias de table

            × 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