MYSQL Inner Join deux table sur deux touches
Je suis en train de faire une requête pour renvoyer tous les utilisateurs des caddies, stockée dans la sb_carts table. Les informations de produit stocké dans sb_carts est référencé sur deux touches product_sku et school_id. Il doit faire référence à la fois pour retourner un produit unique unique avec des niveaux de stock etc.
Lorsque j'exécute la requête suivante, il retourne une ligne, je m'attends à 3 lignes.
J'ai essayé de casser la jointure interne en deux jointures mais cela renvoie toujours 1 seul résultat. joindre uniquement sur une clé a le résultat désiré, mais peut-être faut relancer le mauvais produit. Une jointure gauche renvoie 3 lignes, mais certaines données sont manquantes produit spécifique
Voici un exemple simplifié de ce que je fais
SÉLECTIONNEZ sb_carts.product_sku DE sb_carts INNER JOIN sb_products SUR sb_products.sku = sb_carts.product_sku ET sb_products.school_id = sb_carts.school_id OÙ sb_carts.order_id = 0 ET sb_carts.user_id = 2 GROUPE PAR sb_carts.cart_id
La Requête Complète ressemble à
SELECT COUNT(DISTINCT sb_carts.cart_id) la quantité, la sb_carts.* DE sb_carts INNER JOIN sb_children SUR sb_children.child_id = sb_carts.child_id INNER JOIN sb_school_entities SUR sb_school_entities.school_id = sb_children.school_id INNER JOIN sb_products SUR sb_products.sku = sb_carts.product_sku ET sb_products.school_id = sb_carts.school_id LEFT JOIN sb_houses SUR sb_children.house_id = sb_houses.id LEFT JOIN sb_refund_cart SUR sb_carts.cart_id = sb_refund_cart.cart_id OÙ sb_carts.order_id = 0 ET sb_carts.user_id = 2 GROUPE PAR sb_carts.child_id, sb_carts.product_sku, sb_carts.school_id COMMANDE PAR sb_children.dob_year, sb_children.dob_month, sb_children.dob_day ASC
Vous devez vous connecter pour publier un commentaire.
Le problème est probablement
GROUP BY
. Vous obtiendrez seulement un enregistrement par ID de panier, même si il y a plusieurs produits dans le panier. Pour obtenir ce que vous voulez, essayez cette:Qui sera de retour en deux colonnes (ID de panier et le SKU) au lieu d'un seul, et tous les articles pour un panier ID apparaissent comme des lignes consécutives dans la requête.
Pourquoi êtes-vous à l'aide de la
Group By
déclaration? Si vous n'êtes pas à l'aide d'une fonction dans leSelect
commeSum
,AVG
, etc ne fait aucun sens pour votre porpouse.Donc, essayez d'exécuter la requête sans le
Group By
déclaration 🙂Espère que cela aide!
Santi! 🙂
Mysql INNER JOIN sur plusieurs touches:
Ce que nous faisons ici, c'est la combinaison de deux valeurs de la clé et la faire ressembler à elle est l'une des clés.