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

Requêtes MySQL Discussion :

Réunir deux champs portant le meme nom dans une meme requete


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Points : 26
    Points
    26
    Par défaut Réunir deux champs portant le meme nom dans une meme requete
    Alors mon problème est le suivant, et peut être ceci est du à une mauvaise conception de mon shéma de bdd à la base, mais passons ....

    J'ai une table adherent, et un adhérent peut avoir deux adresse ( pas n adresses, mais exactement 2). J'ai donc dans cette table un champ id_ville1 et id_ville2 lié à une autre table se nommant ville_adherent et qui contient le nom des villes et leur code postal correspondant (ville, codepostal).

    Je cherche a selectionner un adhérent particulier en reunissant les deux villes ou celui ci reside, dans une seule requete. Or je ne vois pas du tout comment faire. Je dois créer des alias, ca c'est certain, mais je ne sais pas comment faire correspondre la premiere selection de ville a un alias que j'aurai appellé ville1 et la seconde selection à un alias que j'aurai appelé ville2.

    J'espere avoir été suffisement clair, merci d'avance à ceux qui peuvent me donner un coup de pouce, et n'hésitez pas a me dire que ma conception est mauvaise si c'est le cas.

  2. #2
    Membre confirmé Avatar de nounetmasque
    Inscrit en
    Janvier 2003
    Messages
    494
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 494
    Points : 570
    Points
    570
    Par défaut
    Je ne suis pas certain de bien avoir compris le problème mais essaye cette requette :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT  * 
    FROM tb_adherent t1, tb_ville t2, tb_ville t3
    WHERE t1.idAdherent = ton id
    AND t1.id_ville_1 = t2.id_ville
    AND t1.id_ville_2 = t3.id_ville
    "Dieu reste muet, si seulement nous pouvions convaincre l'être humain d'en faire autant."

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Points : 26
    Points
    26
    Par défaut
    merci nounetmasque, ce que tu me propose peut fonctionner, mais ce n'est malheuresement pas ce que je cherche ...

    Un select * implique que je selectionne tous les champs, et en plus le nom du champ de la table resultat pour la ville 1 et 2 est généré ce qui ne me permet pas de l'exploiter comme je veux dérrière.

    Je souhaite selectionner des champs précis , et non pas tous , en ayant le controle sur les noms que vont porter mes champs ville1 et ville2 dans la table résultante.

    Voici ma requete en fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT no_adherent, abreviation, nom, prenom, categorie, etat, type, adresse1, codepostal AS codepostal1, ville AS ville1, codepostal AS codepostal2, ville AS ville2, telephone1, telephone2, sexe, date_pr_i 
    FROM adherent, type_adherent, ville_adherent, civilite 
    WHERE no_adherent='" + this.indexLecteur + "' 
    AND adherent.id_type = type_adherent.id 
    AND adherent.id_ville = ville_adherent.id 
    AND adherent.id_ville2 = ville_adherent.id 
    AND adherent.id_civilite = civilite.id
    Mais ce ne fonctionne pas , et c'est normal, car je fais appel deux fois a ma table ville_adherent, donc il y a duplicata sur les champs de cette table, et mysql ne peut pas deviner qu'il doit les attribuer a mes alias ville1 et ville2, ainsi que codepostal1 et codepostal2

    voici la structure de ma table ville_adherent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Champ  	          Type   	    Null  	      Défaut
    id 	              tinyint(4) 	Non  	  	              Index de ville 
    id_type_defaut 	tinyint(2) 	  Non  	          0  	       Type de lecteur selon sa ville 
    ville 	              varchar(64)     Non  	  	            Nom de la ville 
    codepostal 	  varchar(5) 	  Non  	  	                Code postal de la ville

  4. #4
    Membre confirmé Avatar de nounetmasque
    Inscrit en
    Janvier 2003
    Messages
    494
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 494
    Points : 570
    Points
    570
    Par défaut
    Je te conseille de nommer tes tables dans ta requette et pour ne pas utiliser deux fois la même table ville_adherent utilise la technique que je te propose dans la requette :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    FROM ville_adherent t2, ville_adherent t3
    ...
    "Dieu reste muet, si seulement nous pouvions convaincre l'être humain d'en faire autant."

  5. #5
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Points : 26
    Points
    26
    Par défaut
    Oh mais oui c'est ça !!!! merci infiniment !!!

    J'ai donc pu corriger ma requete comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT no_adherent, abreviation, nom, prenom, categorie, etat, type, 
    adresse1, v1.codepostal AS codepostal1, v1.ville AS ville1, 
    adresse2, v2.codepostal AS codepostal2, v2.ville AS ville2, 
    telephone1, telephone2, sexe, date_pr_i 
    FROM adherent, type_adherent, ville_adherent v1, ville_adherent v2, civilite
    WHERE no_adherent='" + this.indexLecteur + "' 
    AND adherent.id_type = type_adherent.id 
    AND adherent.id_ville = v1.id 
    AND adherent.id_ville2 = v2.id
    AND adherent.id_civilite = civilite.id
    et ça fonctionne !! yeah !!

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

Discussions similaires

  1. [AC-2003] Additionner des champs d'une meme table dans une seul requete
    Par Ardiden31 dans le forum Requêtes et SQL.
    Réponses: 17
    Dernier message: 26/04/2012, 11h21
  2. Deux Champs de type Recherche liés dans une même liste.
    Par hassine dans le forum Configuration
    Réponses: 6
    Dernier message: 16/09/2009, 16h55
  3. javascript/php:recuperer une valeur de select dans une meme page dans une var php
    Par hraiwen dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 21/03/2009, 13h12
  4. Plusieurs indicateurs d'une meme table dans une seule requete
    Par arnaud.barre dans le forum Débuter
    Réponses: 5
    Dernier message: 12/04/2007, 17h23
  5. [XSD] Elements de meme nom dans une sequence
    Par MathiasM dans le forum Valider
    Réponses: 2
    Dernier message: 14/04/2005, 09h33

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