[RESOLU] aide sur requète sur 3 tables

cockpitinferno
Invité n'ayant pas de compte PHPfrance

14 août 2015, 18:15

bonjour à tous,

je souhaite extraire de ma boutique presatshop les sources de connections des clients qui ont passé une commande.
j'ai une table de connections avec seulement la page source (http_referrer) et et l'id_guest (table ps_connections)
j'ai une autre table avec l'id_guest et l'id_customer (ps_guest)
et une 3e table avec l'id customer et l'id order (ps_orders)

j'ai essayé plusieurs trucs dont ca:
SELECT `http_referer`, `id_order`
FROM `ps_connections`,`ps_orders`
WHERE id_guest IN (SELECT id_guest FROM ps_guest WHERE id_customer != 0)

mais ca me sort un fichier énorme, j'ai du laisser tonmber en cours de route. je souhaite un simple tableau avec id_order et http_referer en face.
merci d'avance pour votre aide.

Mammouth du PHP | 571 Messages

15 août 2015, 14:20

bonjour,

les résultats retournés par ta requête ne peuvent qu'être incohérents car tu fais un produit cartésien(en lieu et place d'une jointure) entre la table ps_connections et la table ps_orders autrement dit si l'une de ces tables contient 15 lignes et l'autre 10 lignes tu auras 150 lignes renvoyées par la requête.Après tout ta démarche reste du SQL1 où une jointure est matérialisée par l'égalité(avec where ou AND) de certains champs entre différentes tables.

En SQL2, tu auras simplement à faire:

Code : Tout sélectionner

SELECT o.id_order, c.http_referer FROM ps_orders o JOIN ps_guest g ON o.id_customer = g.id_customer JOIN ps_connections c ON c.id_guest = g.id_guest

cockpitinferno
Invité n'ayant pas de compte PHPfrance

17 août 2015, 18:13

merci de ta réponse, je vais essayer cela rapidement.

cockpitinferno
Invité n'ayant pas de compte PHPfrance

17 août 2015, 18:29

merci ca a super bien marché. tu m'a fait gagner un temps précieux et en plus je vais enfin pouvoir nettoyer ma base. :D