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

PHP & Base de données Discussion :

[SQL] 2 Champs identiques


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 11
    Par défaut [SQL] 2 Champs identiques
    Bonjour,
    Voilà, je me heurte à un petit problème...
    J'ai 2 champs qui portent le même nom dans deux tables différentes.
    Dans mon code, j'ai une requête qui fait appel aux 2 tables et je dois renvoyer en GET (ou POST) le champs d'une des deux tables, mais il m'envoi toujours celui de l'autre...
    je sais pas si c'est trés clair
    En résumé :
    table1 champs1
    table2 champs1

    req * table1, table2

    echo champs1 <-- et là il me sort le champs de la table2 alors que je veux celui de la tabl1

    j'avais pensé à un truc du genre :
    echo $tabl_resultat['table1.champs1']; mais ça ne fonctionne pas.

    Existe-t-il un truc svp?

    Merci

  2. #2
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Salut,

    Il faut que tu utilises AS dans ta requête.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT table1.nom AS nom1, table2.nom AS nom2 WHERE ...
    Et ensuite tu pourras faire par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tabl_resultat['nom1'];

  3. #3
    Membre éclairé Avatar de J0r_x
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2006
    Messages : 804
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $query = mysql_query("SELECT table1.champs1, table2.champs1 FROM table1,table2 WHERE talbe1.id=table2.id ....");
    $val = mysql_fetch_row($query) //<- si ta table ne te renvoie qu'un valeur sinon utilisation d'un while.
    $val[0] correspondra à table1.champs1 
    $val[1] correspondra à table2.champs1
    J'espère que c'est ça que tu voulais faire.

  4. #4
    Membre émérite Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Par défaut
    Il faut utilisé l'opérateur d'Alias de SQL : AS

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 11
    Par défaut
    Merci pour vos réponses.
    Le problème c'est qu'il me faut tous les champs les autres champs de mes tables. De plus derrière, j'ai un while...
    Voici mon bout de code (on se moque pas, je prog encore comme sous php1 )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $req=mysql_query("SELECT * FROM demande,technicien,chantier where date='$_GET[datedem]' && demande.idtech=technicien.id && demande.numchantier=chantier.num ORDER BY demande.num DESC");
     while ($tabl_resultat = mysql_fetch_array($req))
    		{ ?>
          <tr>
            <td><div align="center">
    		<?
    		echo "$tabl_resultat[num]";
    		?>
     
    		</div></td>
    voilà, il me faut le champ "num" de la table "demande" et il me sort celui de la table "chantier"...
    Y a pas moyen sans être obligé de rentrer tous mes champs dans la requête?

  6. #6
    Membre éclairé Avatar de J0r_x
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2006
    Messages : 804
    Par défaut
    Les SELECT * sont deconseillé car gourmand en ressource et quand tu recherches sur plusieurs table amuse toi à savoir dans quel ordre arrive tes info, je te conseille de mettre le nom de tes colonnes
    et pour ton tabl[num] mets tabl['num'].

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 11
    Par défaut
    Citation Envoyé par J0r_x
    Les SELECT * sont deconseillé car gourmand en ressource
    Je sais, mais j'ai besoin de tous les champs de toutes les tables

  8. #8
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Si tu as vraiment plein plein de colonnes je crois que c'est possible de faire ça à la limite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT *, table1.nom AS nom1, table2.nom AS nom2 FROM...
    Sinon pour ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "$tabl_resultat[num]";
    les guillemets sont inutiles, donc le mieux c'est d'avoir ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $tabl_resultat['num'];

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 11
    Par défaut
    Citation Envoyé par JWhite
    Si tu as vraiment plein plein de colonnes je crois que c'est possible de faire ça à la limite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT *, table1.nom AS nom1, table2.nom AS nom2 FROM...
    Sinon pour ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "$tabl_resultat[num]";
    les guillemets sont inutiles, donc le mieux c'est d'avoir ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $tabl_resultat['num'];

    Ben voilà, pas plus dur!
    Et ça marche nickel!!
    Merci beaucoup

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

Discussions similaires

  1. [SQL] Requête SQL avec champ identique
    Par morgan47 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 09/10/2007, 20h53
  2. Requete croisant deux champs identiques
    Par sabotage dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/08/2005, 11h59
  3. Pb sur une requête SQL (de champ vide)
    Par Marion dans le forum Langage SQL
    Réponses: 3
    Dernier message: 01/07/2004, 11h12
  4. plusieurs champs identiques en ligne
    Par viviking dans le forum Langage SQL
    Réponses: 12
    Dernier message: 18/06/2004, 11h25
  5. [sql] [jointure] champs = substring(champs,1,5)
    Par DaxTaz dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/05/2004, 12h45

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