IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

svp un peu d'aide sur mon update, resumé simple en dessous


Sujet :

Langage SQL

  1. #1
    Membre éclairé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 948
    Points : 719
    Points
    719
    Par défaut svp un peu d'aide sur mon update, resumé simple en dessous
    [edit]
    Mon post etant long chi### et compliqué, j'ai reformulé la question plus bas...
    si quelqu'un pouvait m'aider
    je manque de connaissance!
    merci d'avance!
    [/edit]

    bonjours, afin de palier a l'abscence des vues dans mysql 4.0, je crée une table temporaire, dans la quelle je renseigne les données 1-aire (une seule ligne par info), puis, j'essaie de lui envoie des champs complementaire (plusieurs info pour une ligne)

    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    UPDATE requisDispoTemp, agents.d_agents, e_expert 
    SET requisDispoTemp.Nom_Expert = concat_WS(' ' , agents.d_agents.a_Nom, requisDispoTemp.Nom_Expert) 
    WHERE e_expert.a_id = agents.d_agents.a_id 
    AND e_expert.id_outil = requisDispoTemp.id_outil

    on as :
    ma table temporaire

    le pb c'est que la table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    e_expert (a_id, id_outil)
    peut posseder plusieurs personnes (a_id) pour un meme classeur outil
    (id_outil)

    ex :
    (classeur_outil---(0,N)----------(0,N)-------expert)


    fonctionnelement, ca ne parcours pas les resultats : ca trouve le premier enregistrement correspondant :
    ca me trouve le premier expert, mais pas les autres (que je voudrait afficher grace au concat with separator(, mais qui a besoin d'un oparcours des resultats) )

    en esperant avoir ete suffisament clair...

    plus concretement, peut on faire un ipdate qui parcours tous les ersultats? sinon, comment dois-je faire?

    ----------------------------------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    CREATE TEMPORARY TABLE IF NOT EXISTS requisDispoTemp 
    					(
    						id_outil int primary key,
    						Service int(10) unsigned ,
    						Nom_CO varchar(255),
    						Compétences_dispo int, 
    						Compétences_cibles int,
    						Compétences_requises int, 
    						Nom_Expert varchar(50),
    						Nom_Responsable_COP varchar(50)
    					)
     
     
    DELETE FROM requisDispoTemp
     
     
     
     
    INSERT INTO requisDispoTemp 
    							(
    								id_outil, 
    								Service, 
    								Nom_CO, 
    								Compétences_dispo, 
    								Compétences_cibles,
    								Compétences_requises
    							)
    						SELECT 
    						e_Classeur_outil.id_outil AS id_outil, 
    						d_sdum.s_Code AS Service, 
    						e_Classeur_outil.nom AS Nom_CO, 
    						COUNT(e_Competence_agent.id_competence) AS Compétences_dispo, 
    						SUM(e_Competences_cible.nombre) AS Compétences_cibles, 
    						SUM( e_Competences_requises.nombre) AS Compétences_requises 
    FROM        e_Classeur_outil, 
    						e_Competence_agent, 
    						e_Competences_cible, 
    						e_Competences_requises, 
    						e_lien_classeur_outil_et_sdua, 
    						dtg.d_sdum, 
    						e_activite  
    WHERE e_Competence_agent.id_activite = e_activite.id_activite
    						AND e_Competences_cible.id_competence LIKE '%%'
    						AND e_activite.id_outil = e_Classeur_outil.id_outil 
    						AND e_Competences_cible.id_activite = e_activite.id_activite
    						AND e_Competences_requises.id_activite = e_activite.id_activite
    						AND e_lien_classeur_outil_et_sdua.s_id = 7  
    						AND e_lien_classeur_outil_et_sdua.id_outil = e_Classeur_outil.Id_outil 
    						AND d_sdum.s_id = e_lien_classeur_outil_et_sdua.s_id  GROUP BY Nom_CO, id_outil, Service 
     
     
     
     
    UPDATE requisDispoTemp, agents.d_agents, e_expert 
    SET requisDispoTemp.Nom_Expert = 
                     concat_WS(' ' , agents.d_agents.a_Nom, requisDispoTemp.Nom_Expert) 
    WHERE e_expert.a_id = agents.d_agents.a_id AND e_expert.id_outil = requisDispoTemp.id_outil 
    Résultat de la requete : '1'
    ceci est le code de création )

  2. #2
    Membre éclairé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 948
    Points : 719
    Points
    719
    Par défaut
    plus simplement :
    comment faire un update avec un where qui, si il a + d'un champ correspondant en retours, les parcours, ou les affecte a la/aux valeur a modifier?

  3. #3
    Membre éclairé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 948
    Points : 719
    Points
    719
    Par défaut
    suis-je obligé de le suivre par programmation, ou avec des instruictions SQL puis-je y arriver?
    je pense a des boucles sql de type wile (j'y connait rien a ce niveau la...)

  4. #4
    Membre éclairé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 948
    Points : 719
    Points
    719
    Par défaut
    je vait esssayer avec un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select blabla ;
    FOR EACH ROW
     update  blabla;
    mais suis po sur ^^

  5. #5
    Membre éclairé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 948
    Points : 719
    Points
    719
    Par défaut
    je voudrait faire un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    	SELECT 						agents.d_agents.a_nom
     
    	FROM 							agents.d_agents, 
    								e_expert 
     
    	WHERE 
    								e_expert.a_id = agents.d_agents.a_id AND 
    								e_expert.id_outil = requisDispoTemp.id_outil
     
    	FOR EACH ROW
     
                 UPDATE 
    								requisDispoTemp,
    							SET 
    								requisDispoTemp.Nom_Expert = 
    										concat_WS(' ' , agents.d_agents.a_Nom, requisDispoTemp.Nom_Expert)
    mais je suis vraiment po sur d'etre sur la bonne voie...

  6. #6
    Membre régulier Avatar de arthenius
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 107
    Points : 120
    Points
    120
    Par défaut
    Salut hansa !!

    Bon la ca rendre dans mon cadre de competence ^^

    pour ton probleme je pense que tu dois le faire par programme

    avec un select puis une boucle qui parcourt tes resultats et qui met a jour ce qu'il faut...

    mais j'avoue ne pas avoir bien saisi ce que tu voulais faire ^^ exactement ...
    Arthenius

  7. #7
    Membre éclairé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 948
    Points : 719
    Points
    719
    Par défaut
    je sait :'(

    on fait la premiere requte, on la parcour par programmation, et tout le long, on fait nos traitements/requetes secondaires
    :'(

    mias mon pb, c'est que je doit gerer de multiples sorties, et je suis partie sur un paradigme :
    j'ai un objet sortie qui a diverses methodes servant a rien (enfin si, un peu), une des methodes, est la creation de la requete nescesaire
    ensuite, je fait des heritages : pour la sortie php, pour la sortie excel, pour la sortie...

    et ces heritages, recupérerent la requete et font la presentation tous seuls.

    le probleme, c'est que je doit donc tout faire en une seule requete.

    j'ai donc complexifié le coté sql afin de simplifier le coté programmation.

    c'etait tout a fait pratique, et j'ai fait une bonne serie de sorties ainsi, mais la je bloque car je n'ai plus que des requetes complexes a faire.

    on pourrait se dire "mais qu'il est con! il n'a qu'a faire des methodes pour chaque sortie si il n'y arrive pas!" mais la je vous repondrait :
    "y'a trop de sorties!"

    donc ...

    je flanche, et je coule, meme si je fait la planche, ma feuille reste blanche ^^

    (dsl)

  8. #8
    Membre régulier Avatar de arthenius
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 107
    Points : 120
    Points
    120
    Par défaut
    et une vue ???
    ca peu pas serviur une vue ???

    ou alors un module qui va te remplir une table Temporaire avec toutes les données pour toutes tes sorties ...

    et un code qui va lire cette table temp et faire les sorties qui vont bien...

    ainsi le plus gros ce fait sous sql / prog...
    y a juste du formatage apres en sortie ...
    Arthenius

  9. #9
    Membre éclairé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 948
    Points : 719
    Points
    719
    Par défaut
    une table temporaire : c'est ce que je voulait faire (les vues n'etant pas supportées)

    le pb c'est :
    (classeur_outil---(0,N)----------(0,1)-------expert)
    pour remplir ma table avec ce genre de table "multiple" j'ai procédé en deux passes :

    1ere passe : je remplit tous les Classeur outil
    2de passe : je fait un UPDATE en remplissant les experts

    mon pb :
    dans la 2de passe, il faut ajouter 0..N expert, il faut donc une boucle de parcours... chose que je ne sait pas faire en SQL...

  10. #10
    Membre régulier Avatar de arthenius
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 107
    Points : 120
    Points
    120
    Par défaut
    mais cette boucle tu peux la faire par prog non ??
    Arthenius

  11. #11
    Membre éclairé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 948
    Points : 719
    Points
    719
    Par défaut
    le probleme, c'est que je doit donc tout faire en une seule requete.

    j'ai donc complexifié le coté sql afin de simplifier le coté programmation.
    et la...
    je pleure :'(

    :'''''''''''''''''(

    a moins que... mais oui!

    roh!

    merci!

    je peut la faire par programmation! vu que c'est plus tard que je vait lancer une requete pour la parcourire!

    le devant son a son pb!

    grace a toi : :trouve:

    tu est le

  12. #12
    Membre régulier Avatar de arthenius
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 107
    Points : 120
    Points
    120
    Par défaut


    de rien ...
    Arthenius

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Demande d'aide sur mon code
    Par b.soufiane dans le forum C++
    Réponses: 6
    Dernier message: 07/12/2007, 16h36
  2. Aide sur mon Code !
    Par b.soufiane dans le forum C
    Réponses: 10
    Dernier message: 07/12/2007, 12h38
  3. aide sur mon diagramme de Class
    Par Maria1505 dans le forum Diagrammes de Classes
    Réponses: 9
    Dernier message: 30/07/2007, 11h00
  4. Un peu d'aide sur une expression régulière particulier
    Par ruana dans le forum Général Python
    Réponses: 2
    Dernier message: 03/06/2007, 19h04
  5. [Language] Aide sur mon premier programme Java?
    Par hash2zo dans le forum Langage
    Réponses: 15
    Dernier message: 27/09/2005, 19h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo