Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/05/2011, 12h50   #1
Inscrit
 
Inscription : septembre 2005
Messages : 260
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 260
Points : 98
Points : 98
Par défaut Problème avec les jointures

Bonjour,

Pouvez-vous m’aider svp
Je n’arrive pas à faire des multiples jointures


Comme ceci ca fonction

Code :
1
2
3
4
5
6
$query = $db->query("SELECT * FROM ps_product_lang 
INNER JOIN ps_image_lang 
ON (ps_product_lang.id_product = ps_image_lang.id_image) 
INNER JOIN ps_category_product 
ON (ps_product_lang.id_product = ps_category_product.id_product) 
WHERE name LIKE '%" . $queryString . "%'");

Mais quand je rajoute une nouvelle jointure ca ne fonction plus.

Code :
1
2
3
4
5
6
7
8
$query = $db->query("SELECT * FROM ps_product_lang 
INNER JOIN ps_image_lang 
ON (ps_product_lang.id_product = ps_image_lang.id_image) 
INNER JOIN ps_category_product 
ON (ps_product_lang.id_product = ps_category_product.id_product) 
INNER JOIN ps_category_lang 
ON (ps_category_product.id_category = ps_category_lang.id_category) 
WHERE name LIKE '%" . $queryString . "%'");

Merci d'avance
Akim13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 14h12   #2
Membre actif
 
Homme Fabrice Agnello
Développeur informatique
Inscription : octobre 2010
Messages : 76
Détails du profil
Informations personnelles :
Nom : Homme Fabrice Agnello
Âge : 39
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : octobre 2010
Messages : 76
Points : 161
Points : 161
Bonjour,

Quand vous dites que ça ne marche plus, qu'entendez vous par là ?

Avez vous une erreur affichée quelque part et si oui, quelle est-elle ?

Si pas d'erreur, vous pourriez explorer cette piste :
en partant du postulat que vous êtes sous MySQL et MyISAM (ou autre moteur, mais sans relation déclarée entre ps_category_lang et ps_category_product), il vous faudrait vérifier que vous avez bien correspondance entre les id_category de la première table et la seconde.
Si pas de correspondance, il est normal que la base de données ne vous retourne aucune ligne.
Pour palier à ce cas de figure, vous avez deux solutions :
1 - renseignez les bon id_category dans la table ps_category_product et si le moteur de base de données le permet, établissez une contrainte forte entre les colonnes des deux tables.
2 - utilisez une jointure externe entre les deux tables (LEFT OUTER JOIN) pour que les enregistrements, même sans correspondance dans la table parente, puissent remonter.

HTH.
Agnello Fabrice est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/05/2011, 12h53   #3
Inscrit
 
Inscription : septembre 2005
Messages : 260
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 260
Points : 98
Points : 98
Merci de m’avoir répondu

C'est un moteur de recherche avec l'api google donc quand il y a une erreur mysql error n'affiche pas alors je place juste un echo 'Erreur.'; si il y a une erreur.

Voila j'arrive a afficher le nom du produit ID du produit ID de la catégorie, mais mon problème est que je n'arrive pas a afficher le nom de la catégorie qui ce trouve dans la table ps_category_lang.

Apres plusieurs recherche je pense que j’ai trouvé d’où le vien le probleme, mais je ne suis sur.

Es ce que cela peut venir du fait que la table ps_product_lang et la table ps_category_lang en le même champ avec le nom ‘name’ mais, avec des donné différents.

Si c’est ca j’ai tous essayer mais impossible de trouver la solution.


Merci pour votre aides.
Akim13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2011, 14h09   #4
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Bonjour,
ca peut etre un "conflit" sur le champ name (si il existe dans plusieurs tables)
WHERE name ...

Ecrit :
WHERE nom_de_la_bonne_table.name ...
(WHERE ps_product_lang.name ... ?)
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/05/2011, 16h02   #5
Inscrit
 
Inscription : septembre 2005
Messages : 260
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 260
Points : 98
Points : 98
C’est presque parfait, juste un petit problème

Maintenant, je récupère le nom de la catégorie, mais pas celui du produit, mais en plus j’ai 3 résultats identiques

Merci quand même
Akim13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h04.


 
 
 
 
Partenaires

Hébergement Web