Page 1 sur 1
Selection multi table
Posté : 22 nov. 2008, 16:00
par sylvaing26
Bonjour, j'essaie de faire une selection sur plusieurs table mais je n'y arrive pas
$sql = mysql_query("SELECT `coupes_trophees`.*, `gravures`.*, `medailles`.* FROM coupes_trophees, medailles, gravures WHERE reference LIKE '$reference'");
Posté : 22 nov. 2008, 16:08
par jojolapine
Euh
Je ne croit pas que l'on puisse faire un SELECT nomtable.*, il faut spécifier le nom des champs, as-tu essayé?
Posté : 22 nov. 2008, 16:08
par albat
- Sélectionner des champs de plusieurs tables,
sans construire de jointure entre les tables,
c'est créer un produit cartésien !
- Toujours écrire sa requête dans une variable, puis l'exécuter
au lieu de faire les deux en une seule opération.
- Extraire les variables des chaînes de caractères.
Posté : 22 nov. 2008, 16:23
par albat
Les rappels 2 et 3 donnent donc :
$sql = "SELECT ...... FROM coupes_trophees, medailles, gravures WHERE reference LIKE '%".$reference."%'";
$res = mysql_query($sql) or die(mysql_error());
Je te laisse corriger le 1er.
J'oubliais une 4e recommandation : un LIKE fonctionne mieux avec les caractères génériques %

Posté : 22 nov. 2008, 16:27
par jojolapine
Et j'ajouterais que si par hasardn tu n'avais pas besoin des caractères générique, autant mettre un = à la place du LIKE, c'est ultra plus rapide

Posté : 22 nov. 2008, 16:46
par sylvaing26
j'ai fait ceci mais il ne me recupère rien
$sql = mysql_query("SELECT prix FROM coupes_trophees, gravures, medailles WHERE coupes_trophees.reference = '$reference'");
$nbr=mysql_num_rows($sql);
if($nbr > 0){
while($result=mysql_fetch_array($sql)){
$prix = $result['prix'];
}
}
Posté : 22 nov. 2008, 16:55
par albat
Le code que tu viens d'indiquer ne prenant en compte
aucune des 5 recommandations faites plus haut,
je ne vois rien à ajouter.

Posté : 22 nov. 2008, 17:02
par sylvaing26
J'ai cree ma requette dans une variable et utilisé le =
Peut etre serai ce mieux comme ceci alors ?
$sql = "SELECT `coupes_trophees`.`prix`, `gravures`.`prix`, `medailles`.`prix` FROM coupes_trophees, medailles, gravures WHERE reference = '$reference''";
$res = mysql_query($sql) or die(mysql_error());
$nbr=mysql_num_rows($res);
if($nbr > 0){
while($result=mysql_fetch_array($res)){
$prix = $result['prix'];
}
}
Posté : 22 nov. 2008, 17:39
par jojolapine
Oui? et qu'est-ce que ça donne? des erreurs, aucuns résultats?
Sinon essaye de différencier les noms de colonnes, genre:
Mais que contiennent ces collonnes?, qu'est-ce que tu veux récupéré au fait? pourquoi plusieurs tables ?
Posté : 22 nov. 2008, 21:13
par sylvaing26
en fait j'ai un catalogue ou j'ai des articles qui sont des coupes, des medailles et des coupes, je souhaite recuperer le prix d'un article a partir de se reference donc faire une recherche dans les 3 tables.
Il me recupere bien ce qu'il faut sauf qu'il me met 46 pages avec le même resultat