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

Développement SQL Server Discussion :

Problême sql server : requête que je n'arrive pas à formuler


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 105
    Par défaut Problême sql server : requête que je n'arrive pas à formuler
    Bonjour a tous.
    J'ai beau chercher (n'étant pas un pro de sqlserver), je n'arrive pas a formuler une demande sous forme de requête.
    Donc, j'aurais voulu savoir s'il est possible d'avoir une réponse ou élément de réponse via le forum

    Je vous présente déjà les données

    j'ai ma table ENTREPRISE qui a les données suivantes :
    ID_ENTREPRISE,
    ID_ADRESSE,
    ID_ADRESSE_DEUX,
    ENT_RAISOC

    et une table ADRESSE :
    ID_ADRESSE
    ADR_LIG1,
    ADR_LIG2,
    ADR_LIG3,
    ADR_CPOS,
    ADR_VILLE

    toutes les adresse sont dans la table adresse.
    une entreprise a une adresse principale et peut avoir une deuxième adresse (reconnues par les id ID_ADRESSE et ID_ADRESSE_DEUX.)

    Maintenant la demande :
    le but est que pour chaque entreprise, (sachant qu'elles ont déjà une adresse principale) il doit y avoir une deuxième adresse constituée de :
    ENT_RAISOC (si elle n'a aucune adresse 1),
    ADR_LIG2 (de l'adresse principale),
    ADR_LIG3 (de l'adresse principale),
    ADR_CPOS (de l'adresse principale),
    ADR_VILLE (de l'adresse principale)


    A savoir que j'ai deux cas de figures : les cas où ID_ADRESSE_DEUX est null (deuxième adresse deux inexistante : INSERT dans ces cas) et le cas ou il ne l'est pas (adresse deux existante mais à modifier : UPDATE).

    J'espère avoir été suffisamment clair dans la formulation.... n'hésitez pas à me poser la moindre question si ça n'est pas le cas.

    Merci d'avance pour votre aide.
    PS : C'est très urgent donc si une personne pouvait me répondre assez vite ce serait vraiment génial!!!

    Copies d'écrans de l'appli si ça peut aider.

    Adresse 1 :


    Adresse 2 : (avant modif, cas ou elle est vide)


    Adresse 2 : résultat voulu

  2. #2
    Membre actif
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 105
    Par défaut
    J'ai trouvé la réponse à mon problème.

    Je la poste dès fois que ça puisse servir à quelqu'un:

    a savoir qu'adresse elimination correspond à adresse deux

    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
     
    --premier cas : 
    pour les adresses eliminations existantes	
    update adr_elim 
    set   adr_elim.adr_lig1 = case 							
    				    when adr_elim.adr_lig1 in(null,'') 
                                             then ent.ent_raisoc
    				    else adr_elim.adr_lig1 
    				 end,						  
    	  adr_elim.adr_lig2     = adr.adr_lig1,
    	  adr_elim.adr_lig3     = adr.adr_lig2,
    	  adr_elim.adr_cpos   = adr.adr_cpos,
    	  adr_elim.adr_ville    = adr.adr_ville 
     
    from adresse adr_elim 	  
    inner join entreprise ent on ent.id_adresse_elimination = adr_elim.id_adresse 
    inner join adresse adr on ent.id_adresse = adr.id_adresse 	  
     
     
    --Deuxieme cas : dans le cas du insert	  
    --pour chaque premiere ligne ou l'eadresse elimination est null
    while exists(select top 1 id_entreprise from entreprise where id_adresse_elimination is null)
    begin	
    	insert into adresse 
           (adr_elim.adr_lig1, adr_elim.adr_lig2, 
            adr_elim.adr_lig3, adr_elim.adr_cpos, adr_elim.adr_ville)
     
         select  
    		ent.ent_raisoc,
    		adr.adr_lig1,
    		adr.adr_lig2,
    		adr.adr_cpos,
    		adr.adr_ville
         from adresse adr
       join (select top 1 * from entreprise where id_adresse_elimination is null) ent on  ent.id_adresse = adr.id_adresse
     
    --je mets à jour cette id
    	update entreprise 
    	set id_adresse_elimination = (select top 1 id_adresse from adresse order by id_adresse desc)
    	where id_entreprise = (select top 1 id_entreprise from entreprise where id_adresse_elimination is null)
    end

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

Discussions similaires

  1. une requête que je n'arrive pas à faire marcher
    Par JeanNoel53 dans le forum Firebird
    Réponses: 8
    Dernier message: 16/12/2013, 09h27
  2. [2005] probléme de cnx avec sql server ainsi que les éxécusion d'une requéte
    Par mariem deve dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 08/04/2013, 13h20
  3. Une requête que je n'arrive pas à faire
    Par Denti-fritz dans le forum Langage SQL
    Réponses: 3
    Dernier message: 07/12/2005, 13h53
  4. problème que je n'arrive pas à résoudre de façon récursive
    Par miam dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 31/07/2004, 11h21
  5. [SQL Server]Requête avec DateDiff
    Par sangokus dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 10/05/2004, 14h44

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