Jtable: joindre deux table

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • Jtable: joindre deux table

    Bonjour,
    J'ai besoin de récupérer le contenu de deux tables jointes.
    Dans une requête SQL un simple JOIN aurait fait l'affaire.
    Mais j'aimerais bien utiliser la classe JTable pour des raisons de facilité coté administration.

    Est-ce possible sous Joomla 1.6 de faire ceci?
    Je n'ai pas vraiment l'impression mais peut-être qu'un de vous a une astuce.

    Merci à vous.

    Damien
    www.Crac-Design.com

  • #2
    Re : Jtable: joindre deux table

    Bonjour,
    essaye de créer une vue dans ta base mySQL :
    Code:
    CREATE VIEW toto AS ([I]ta requète[/I]);
    Après ça toto se manipule en SQL (à quelques bémols près) comme une table donc ça devrait pouvoir passer...
    Schtroumpfe toi le Schtroumpf t'aidera.
    Je ne schtroumpfe pas aux demandes de schtroumpf par MP.

    Commentaire


    • #3
      Re : Jtable: joindre deux table

      Bonsoir Grand Schtroumph,

      C'est une idée en effet, je n'y avait pas pensé.
      Mais c'est pour la modification que je vais être plus embêté, faut reporter les modifications de la vue sur les tables de départ.
      Au travail...

      Ça ne serait pas prévu dans les futurs versions de Joomla ce genre de choses, ça serait assez pratique?
      www.Crac-Design.com

      Commentaire


      • #4
        Re : Jtable: joindre deux table

        Re,
        Mais c'est pour la modification que je vais être plus embêté, faut reporter les modifications de la vue sur les tables de départ.
        Tu parles de modification de structure ? On est en plein dans les quelques bémols près... Sinon pour le contenu ça doit passer.
        Schtroumpfe toi le Schtroumpf t'aidera.
        Je ne schtroumpfe pas aux demandes de schtroumpf par MP.

        Commentaire


        • #5
          Re : Jtable: joindre deux table

          Merci Grand Schtroumpfe,
          J'avoue que je n'avais jamais utilisé les vues .

          Je ne savais pas que la vue étant modifiée cela modifiait aussi la table qui lui est associée.
          C'est super ça!!!

          Donc en effet tout cela marche très bien.
          www.Crac-Design.com

          Commentaire


          • #6
            Re : Jtable: joindre deux table

            Bon après intégration dans mon composant, c'est moins sympa.
            J'ai créé la vue permettant de jointer deux tables, je vois les donnés de mes deux tables en passant par la vue.

            Mais problème pour modifier ma table: j'ai une belle erreur mysql me disant que je ne peux modifier plus d'une table jointe.
            Je crois que la classe Jtable vient d'abord charger la ligne que je veux modifier (par la vue), applique les modifications sur les valeurs chargés et vient faire un update de tous les champs.
            D'ou l'erreur mysql.
            www.Crac-Design.com

            Commentaire


            • #7
              Re : Jtable: joindre deux table

              Attention, une VIEW SQL est TOUJOURS Read Only. Si on veut modiufier, il faut ouvrir les tables une à une et les mettre à jour puis recharger la vue. Si plusieurs tables sont liées, tant que la vue est active, tu dois prendre garde à l'ordre de mise à jour des tables, compte tenu des éventuels LEFT JOIN, OUTER JOIN etc.
              Pas de demande de support par MP.
              S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

              Commentaire


              • #8
                Re : Jtable: joindre deux table

                Re,
                Attention, une VIEW SQL est TOUJOURS Read Only
                Non ça dépend complétement des moteurs de base de données ; SQLserver et Access sont assez tolérants (au contraire dans SQLserver pour mettre à jour un jeu d'enregistrements content un join, il FAUT une vue), Oracle je ne sais pas trop et MySQL je n'avais jamais expérimenté mais c'est fait.
                Donc :
                Code:
                Create toto as (select a.id, a.title, c.name as cname from jos_content a join jos_categories c on c.id = a.catid;
                update toto set cname= "nnn" where id = 33;
                update toto set title= "ttt" where id = 33
                ça marche

                Mais
                Code:
                update toto set cname= "nnn" , title= "ttt" where id = 33
                ça ne marche pas, on ne peut pas mettre à jour les deux tables en même temps Can not modify more than one base table through a join view.

                Alors que
                Code:
                update  jos_content a join jos_categories c on c.id = a.catid set a.title="tttt", c.name ="nnn" where a.id = 33
                marche...

                Voila, voila...
                Dernière édition par Grand Schtroumpf à 12/06/2011, 23h52
                Schtroumpfe toi le Schtroumpf t'aidera.
                Je ne schtroumpfe pas aux demandes de schtroumpf par MP.

                Commentaire


                • #9
                  Re : Jtable: joindre deux table

                  Je commençais à me poser des questions là.
                  Comme j'avais fait mes requêtes depuis phpmyadmin, j'ai quand même essayé en ligne de commande.

                  On retrouve bien la problématique des tables jointes dans ton lien vers la doc:
                  You cannot use UPDATE to update more than one underlying table of a view that is defined as a join.
                  www.Crac-Design.com

                  Commentaire

                  Annonce

                  Réduire
                  Aucune annonce pour le moment.

                  Partenaire de l'association

                  Réduire

                  Hébergeur Web PlanetHoster
                  Travaille ...
                  X