[RESOLU] Duplication de données: Select From de plusieurs tables

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Duplication de données: Select From de plusieurs tables

Re: [RESOLU] Duplication de données: Select From de plusieur

par moogli » 02 mai 2013, 14:43

de rien

Re: Duplication de données: Select From de plusieurs tables

par Nico La » 02 mai 2013, 14:40

Je souhaitais vous remercier !
J'ai finalement réussi depuis hier matin que je cherchais !

Encore un grand merci !

Bonne journée à vous.

Re: Duplication de données: Select From de plusieurs tables

par Nico La » 02 mai 2013, 14:36

Un grand merci pour vos réponses, en effet je commence à voir le problème !

J'ai donc essayais différentes façon d'utiliser ton code:
SELECT * FROM utilisateur 
JOIN email USING(idutilisateur)
JOIN telephone USING(idutilisateur)
Cependant je n'ai que des erreurs. Que faut-il mettre dans idutilisateur ?

Sachant que mes tables sont sous cette forme:

vid = 106
nid = 106
name = Dubois
first = Jean

(VID et NID sont tous deux idutilisateur).

Re: Duplication de données: Select From de plusieurs tables

par moogli » 02 mai 2013, 14:23

salut,


La comme ça je dirais que tu as fait un produit cartésien : ligne de table1 multiplier par le nombre de ligne de la table2 le tout multiplier par le nombre de tuple de la table 3 ...

Il te faut réaliser une jointure entre les tables.

La jointure c'est ce qui permet de faire la liaison entre les différentes tables (historie de savoir a qui appartient un email ;) )

Dans ton cas les tables sont surement de ce style

utilisateur (
id
nom
prenom
)

email (
idutilisateur
email
)

telephone (
idutilisateur
tel
)

la requête devient donc à ça
select * from utilisateur 
join email using(idutilisateur)
join telephone using(idutilisateur)
@+

Re: Duplication de données: Select From de plusieurs tables

par Gorbi » 02 mai 2013, 14:21

Bonjour,
En fait ton erreur vient de l'utilisation de la commande SELECT avec plusieurs tables, je te conseille de consulter des sites qui t'expliquent comment manipuler ces commandes. Pour ce qui est de l'explication de tes duplications cela vient du fait que cette requête ne possède pas de critère de jointure entre une table et l'autre. Dans ce cas, le compilateur SQL calcule le produit cartésien des deux ensembles, en gros à chaque ligne de la première table, il accole l'ensemble des lignes de la seconde.
Il est donc nécessaire de lui indiquer la clé de liaison avec un WHERE.

Duplication de données: Select From de plusieurs tables

par Nico La » 02 mai 2013, 13:58

Bonjour à tous,

Simple visiteur du forum depuis quelques années, j'ai pris mon courage à deux mains et décidé de passer contributeur.

Explication du problème:

J'ai une page php qui va chercher des données dans trois tables différentes:

- Table 1 = Nom, prénom, mobile
- Table 2 = Telephone fixe
- Table 3 = email

J'ai alors fait cette requête: $req = "SELECT * FROM table 1, table 2, table 3";

Suivi de l'appel aux valeur souhaitée:
$req = "SELECT * FROM table 1, table 2, table 3";
 
$result = mysql_query ($req) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
 
 
 
while ($row = mysql_fetch_array($result)){
 
echo '<table>
 
<tr>
 
<u>'. $row["nom"] .'
 
</tr>
 
<tr>
 
'. $row["prenom"] .'</u>
 
</tr>
 
Téléphone:
 
<tr>
 
'. $row["phone"] .'
 
</tr>
 
Mobile:
 
<tr>
 
'. $row["mobile"] .'
 
</tr>
 
Email:
 
<tr>
 
'. $row["email"] .'
 
</tr>
 
 </table>';

Aucun problème (pour moi) dans le code, jusqu'à ce que j'essai et que je vois mes champs bien remplis mais dupliqués X fois.

Je n'arrive pas à trouver le problème, j'esperais avoir une aide sur le forum.

Bonne journée à vous !

Nico