Maison >base de données >tutoriel mysql >Comment filtrer efficacement les résultats de jointure interne MySQL sur plusieurs tables ?
Requête de jointure interne MySQL sur plusieurs tables avec filtrage supplémentaire
Vous essayez de joindre plusieurs tables dans MySQL à l'aide de jointures internes. En particulier, vous essayez de récupérer des informations sur les produits, les prix et les listes d'un utilisateur spécifique. Cependant, l'inclusion de la table de listes dans votre requête entraîne des données supplémentaires indésirables dans la sortie.
Analysons votre requête et modifions-la pour résoudre le problème :
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'
Cette requête récupère tous les enregistrements pour l'ID utilisateur '7' de la table des commandes, y compris les informations sur les prix et les produits associés.
Pour inclure la table des listes et limiter les résultats à une liste spécifique, vous devez ajouter une condition supplémentaire :
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 -- Add condition to filter by specific listing AND l.url = 'test.com' -- Add condition to filter by specific url
Cette requête modifiée ajoute deux conditions à la clause WHERE :
Cette requête mise à jour devrait vous fournir le résultat souhaité : un tableau contenant des informations sur les produits, les prix et les listes pour l'utilisateur avec l'ID utilisateur '7', filtré par le spécifique conditions d'inscription.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!