J'essaie de joindre quelques tableaux et des exemples de la mise en page sont ci-dessous:
ordres
user_id=7 pricing id=37
prix_produits
id=37 product_id=33
des produits
id=33 name=test product
SQL
SELECT *
FROM orders
INNER JOIN products_pricing
ON orders.pricing_id = products_pricing.id
INNER JOIN products
ON products_pricing.product_id = products.id
WHERE orders.user_id = '7' ");
annonces
id=233 user_id=7 url=test.com
Avec ce SQL, je reçois une sortie qui me donne tous les produits de l’utilisateur user_id de 7 et il listera chaque nom de produit dans une boucle while. Cependant, lorsque j'ajoute un autre INNER JOIN pour une table appelée listings, qui a une colonne user_id et que je dois saisir une URL pour chaque ligne correspondante, je peux ainsi créer un lien hypertexte entre les noms de produit et l'URL. comme la substance de travail ci-dessus. Je le fais très mal ou je manque quelque chose. J'ai passé quelques heures à essayer de comprendre mais je continue à obtenir le même résultat. Quelqu'un peut m'aider?
Essaye ça:
SELECT
p.id,
p.name,
l.url,
o.user_id,
o.pricing_id
FROM orders AS o
INNER JOIN products_pricing AS pp ON o.pricing_id = pp.id
INNER JOIN products AS p ON pp.product_id = p.id
INNER JOIN listings AS l ON l.user_id = o.user_id
WHERE o.user_id ='7'
AND l.id = 233
AND l.url = 'test.com';
Pour les exemples de données que vous avez publiés dans votre question, cela vous donnera:
| ID | NAME | URL | USER_ID | PRICING_ID |
------------------------------------------------------
| 33 | testproduct | test.com | 7 | 37 |
Oui, cela peut être fait en utilisant la jointure INNER elle-même.et récupérez la colonne select dans l'instruction select.
SELECT
p.id,
p.name,
l.url,
o.user_id,
o.pricing_id
FROM orders AS o
INNER JOIN products_pricing AS pp ON o.pricing_id = pp.id
INNER JOIN products AS p ON pp.product_id = p.id
INNER JOIN listings AS l ON l.user_id = o.user_id
WHERE o.user_id ='7'
AND l.id = 233
AND l.url = 'test.com';