D'abord, merci pour avoir correctement formatté ton message. Tellement de gens ignorent ce qui est écrit en rouge quand on poste un sujet que je commençais à désespérer
les produits pour lesquels il y aurait, dans la table informations_produit, un label pays avec valeur France
Si tu ne veux
que les produits qui possèdent un label 'France', ce n'est pas un LEFT JOIN qu'il te faut utiliser mais un simple JOIN (synonyme d'INNER JOIN). Donc la requête devrait ressembler à
Code : Tout sélectionner
SELECT p.products_id,p.products_price
FROM produits p
JOIN informations_produit ip ON ip.products_id = p.products_id
WHERE ip.products_fields_label = 'Pays'
AND ip.products_fields_value = 'France'
Comme les valeurs de
products_fields_label et
products_fields_value sont des conditions de jointure j'aurais tendance à le mettre dans la jointure directement
Code : Tout sélectionner
SELECT p.products_id,p.products_price
FROM produits p
JOIN informations_produit ip ON ip.products_id = p.products_id
AND ip.products_fields_label = 'Pays'
AND ip.products_fields_value = 'France'
(désolé pour le formattage si t'es pas habitué

)
Ensuite, si tu veux ajouter d'autres critères, tu peux simplement ajouter d'autres jointures. "ipp" pour les pays, "ipv" pour les villes, par exemple
Code : Tout sélectionner
SELECT p.products_id,p.products_price
FROM produits p
JOIN informations_produit ipp ON ipp.products_id = p.products_id
AND ipp.products_fields_label = 'Pays'
AND ipp.products_fields_value = 'France'
JOIN informations_produit ipv ON ipv.products_id = p.products_id
AND ipv.products_fields_label = 'Ville'
AND ipv.products_fields_value = 'Toulouse'
...qui devrait retourner ce que tu recherches.
Par curiosité, est-ce que tu pourrais me copier/coller un
EXPLAIN de la requête stp ? Selon la taille de ta base de données et la répartition des enregistrements tu devrais peut-être mettre un index sur
(ipv.products_fields_label,ipv.products_fields_value) parce que c'est par là que va commencer MySQL pour chercher les enregistrements.
D'abord, merci pour avoir correctement formatté ton message. Tellement de gens ignorent ce qui est écrit en rouge quand on poste un sujet que je commençais à désespérer :roll:
[quote="Tong"]les produits pour lesquels il y aurait, dans la table informations_produit, un label pays avec valeur France[/quote]
Si tu ne veux [b]que[/b] les produits qui possèdent un label 'France', ce n'est pas un LEFT JOIN qu'il te faut utiliser mais un simple JOIN (synonyme d'INNER JOIN). Donc la requête devrait ressembler à
[code]SELECT p.products_id,p.products_price
FROM produits p
JOIN informations_produit ip ON ip.products_id = p.products_id
WHERE ip.products_fields_label = 'Pays'
AND ip.products_fields_value = 'France'[/code]
Comme les valeurs de [b]products_fields_label[/b] et [b]products_fields_value[/b] sont des conditions de jointure j'aurais tendance à le mettre dans la jointure directement
[code]SELECT p.products_id,p.products_price
FROM produits p
JOIN informations_produit ip ON ip.products_id = p.products_id
AND ip.products_fields_label = 'Pays'
AND ip.products_fields_value = 'France'[/code]
(désolé pour le formattage si t'es pas habitué :))
Ensuite, si tu veux ajouter d'autres critères, tu peux simplement ajouter d'autres jointures. "ipp" pour les pays, "ipv" pour les villes, par exemple
[code]SELECT p.products_id,p.products_price
FROM produits p
JOIN informations_produit ipp ON ipp.products_id = p.products_id
AND ipp.products_fields_label = 'Pays'
AND ipp.products_fields_value = 'France'
JOIN informations_produit ipv ON ipv.products_id = p.products_id
AND ipv.products_fields_label = 'Ville'
AND ipv.products_fields_value = 'Toulouse'[/code]
...qui devrait retourner ce que tu recherches.
Par curiosité, est-ce que tu pourrais me copier/coller un [url=http://dev.mysql.com/doc/refman/5.0/fr/explain.html]EXPLAIN[/url] de la requête stp ? Selon la taille de ta base de données et la répartition des enregistrements tu devrais peut-être mettre un index sur [b](ipv.products_fields_label,ipv.products_fields_value)[/b] parce que c'est par là que va commencer MySQL pour chercher les enregistrements.