Partage
  • Partager sur Facebook
  • Partager sur Twitter

mettre en place plusieur table ensemble

Sujet résolu
    17 juin 2021 à 8:28:38

    Bonjours Bonjours

    je débute dans la base de donnée je suis en stage

    est mon employeur ma demander de faire une view de plusieur entre elle

    en gros ce serais pour mettre les trois table ensemble Tab_Accepter_Formation; Tab_Attente_Formation; Tab_Refuser_Formation

    pour donner le résultat

    (etat = le nombre de personne quil sont dans le cas exemple meme DQ018 30 personne est valide mais 5 personne en attente enfin personne a etais refuser)r

    • Partager sur Facebook
    • Partager sur Twitter
      17 juin 2021 à 9:02:39

      Bonjour,

      Quel SGBD utilises-tu ?

      Qu'as-tu déjà essayé de faire ?

      Peux-tu poster le résultat attendu pour l'exemple donné ?

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        17 juin 2021 à 9:20:06

        j'utilise mysql (phpmyadmin)

        SELECT
        SFTI.service,
        SFTI.Total, 
        SFTI.codeform,
        SFTACF.Etat AS CB_valid_Accepte,
        SFTATF.Etat AS CB_valid_Attente,
        SFTREF.Etat AS CB_valid_Refuser
        
        FROM
        suivi_formation.Tab_inscipt AS SFTI
        
        LEFT JOIN suivi_formation.Tab_Accepter_Formation AS SFTACF ON
        SFTI.service = SFTACF.service AND SFTI.codeform = SFTACF.codeform AND SFTI.valid = SFTACF.valid
        
        LEFT JOIN suivi_formation.Tab_Attente_Formation AS SFTATF ON 
        SFTI.service = SFTATF.service AND SFTI.codeform = SFTATF.codeform AND SFTI.valid = SFTATF.valid
        
        LEFT JOIN suivi_formation.Tab_Refuser_Formation AS SFTREF ON 
        SFTI.service = SFTREF.service AND SFTI.codeform = SFTREF.codeform AND SFTI.valid = SFTREF.valid;
        
        GROUP BY (SFTI.service, SFTI.Total, SFTI.codeform)

        le group by ne marche pas dans cette exenple

        le resultat attendu ce trouve sur la photo en rendu final

        au mileux en bas

        -
        Edité par GillouuF67 17 juin 2021 à 9:20:27

        • Partager sur Facebook
        • Partager sur Twitter
          17 juin 2021 à 9:46:26

          Avec les données présentées, et sans autre précision, je te propose de d'abord établir la liste des couples service/codeform existant dans toutes les tables avec une sous-requête, puis d'afficher le nombre par jointure gauche :

          SELECT
          	SF.service,
          	SF.codeform,
          	COALESCE( A.Etat, 0 ) AS accepte,
          	COALESCE( T.Etat, 0 ) AS attente,
          	COALESCE( R.Etat, 0 ) AS refus
          FROM
          	(
          		-- Tous les couples service/formation
          		SELECT DISTINCT
          			service,
          			codeform
          		FROM Tab_Accepter_Formation
          		UNION
          		SELECT DISTINCT
          			service,
          			codeform
          		FROM Tab_Attente_Formation
          		UNION
          		SELECT DISTINCT
          			service,
          			codeform
          		FROM Tab_Refuser_Formation
          	) SF
          		LEFT JOIN Tab_Accepter_Formation A
          			ON SF.service = A.service
          			AND SF.codeform = A.codeform
          		LEFT JOIN Tab_Attente_Formation T
          			ON SF.service = T.service
          			AND SF.codeform = T.codeform
          		LEFT JOIN Tab_Refuser_Formation R
          			ON SF.service = R.service
          			AND SF.codeform = R.codeform

          Mais selon moi c'est le modèle de la base de données qui n'est pas bon ... Il ne devrait y avoir qu'une seule table :

          • formation ( service, codeform, type, etat, valid )

          La colonne type contiendrait un code permettant de dire si l'on est accepté, attente ou réfusé ...

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            17 juin 2021 à 10:26:13

            merci a toi benzouye ce code est parfait

            j'ai passer 3 jours a essayer de réussir tu me sauve la vie

            Jai encore des erreur je vais essayer de les résoudre sinon je te recontacte

            un grand merci a toi

            Quand j'essais de crée la view il se trouve qu'il y a une erreur

            View's SELECT contains a subquery in the FORM clause

            Comme faire pour résoudre se ci ?

            -
            Edité par GillouuF67 17 juin 2021 à 15:43:18

            • Partager sur Facebook
            • Partager sur Twitter
              18 juin 2021 à 11:55:01

              je te remercie énormément pour ton aide de hier mais jessais de rajouter une autre table d'un autre base de donnée auree tu une idee pour faire cela 

              SELECT
              SF.service,
              SF.codeform,
              COALESCE( A.Etat, 0 ) AS accepte,
              COALESCE( T.Etat, 0 ) AS attente,
              COALESCE( R.Etat, 0 ) AS refus
              FROM
              (
              -- Tous les couples service/formation
              SELECT DISTINCT
              service,
              codeform
              FROM Tab_Accepter_Formation
              UNION
              SELECT DISTINCT
              service,
              codeform
              FROM Tab_Attente_Formation
              UNION
              SELECT DISTINCT
              service,
              codeform
              FROM Tab_Refuser_Formation
              ) SF
              LEFT JOIN Tab_Accepter_Formation A
              ON SF.service = A.service
              AND SF.codeform = A.codeform
              LEFT JOIN Tab_Attente_Formation T
              ON SF.service = T.service
              AND SF.codeform = T.codeform
              LEFT JOIN Tab_Refuser_Formation R
              ON SF.service = R.service
              AND SF.codeform = R.codeform

              je te remercie davance

              le lien entre l'autre table est le service est il renvoie une autre information

              autre table nom : NB_utilisateur_service

              nbr_doublon 

              libelle (service)

              • Partager sur Facebook
              • Partager sur Twitter
                18 juin 2021 à 12:09:56

                Si la table en question ne contient qu'une seule ligne par service, alors il "suffit" de rajouter une jointure :

                SELECT
                	SF.service,
                	S.libelle,
                	S.nbr_doublon,
                	SF.codeform,
                	COALESCE( A.Etat, 0 ) AS accepte,
                	COALESCE( T.Etat, 0 ) AS attente,
                	COALESCE( R.Etat, 0 ) AS refus
                FROM
                	(
                		-- Tous les couples service/formation
                		SELECT DISTINCT
                			service,
                			codeform
                		FROM Tab_Accepter_Formation
                		UNION
                		SELECT DISTINCT
                			service,
                			codeform
                		FROM Tab_Attente_Formation
                		UNION
                		SELECT DISTINCT
                			service,
                			codeform
                		FROM Tab_Refuser_Formation
                	) SF
                		INNER JOIN NB_utilisateur_service S
                			ON SF.service = S.service
                		LEFT JOIN Tab_Accepter_Formation A
                			ON SF.service = A.service
                			AND SF.codeform = A.codeform
                		LEFT JOIN Tab_Attente_Formation T
                			ON SF.service = T.service
                			AND SF.codeform = T.codeform
                		LEFT JOIN Tab_Refuser_Formation R
                			ON SF.service = R.service
                			AND SF.codeform = R.codeform

                Mais vu son nom, j'ai l'impression que c'est une table de relation ... qui aurait donc plusieurs lignes pour un même service ... Si c'est le cas, il doit plutôt exister une table "service" non ?

                • Partager sur Facebook
                • Partager sur Twitter
                Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL

                mettre en place plusieur table ensemble

                × 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