Prenons le cas de deux tables: tbl_product
et tbl_transaction
.
tbl_product
listes Détails du produit, y compris les noms et ids tandis que tbl_transaction
énumère les opérations portant sur les produits et comprend les dates, les produits-ids, les clients, etc.Comment limiter les résultats d'un LEFT JOIN
je dois afficher une page Web montrant 10 produits et pour chaque produit, le dernier 5 transactions. Jusqu'à présent, aucune requête LEFT JOIN
ne semble fonctionner et la sous-requête ci-dessous aurait fonctionné si mysql pouvait autoriser la partie tx.product_id=ta.product_id
(échoue avec Colonne inconnue 'ta.product_id' dans 'clause where': [ERREUR: 1054]).
SELECT
ta.product_id,
ta.product_name,
tb.transaction_date
FROM tbl_product ta
LEFT JOIN (SELECT tx.transaction_date FROM tbl_transaction tx WHERE tx.product_id=ta.product_id LIMIT 5) tb
LIMIT 10
Est-il possible d'obtenir la liste que j'ai besoin sans utiliser plusieurs requêtes dans une boucle?
Edit:
C'est exactement ce que je dois de MySQL:
SELECT ta.product_id, ta.product_name, tb.transaction_date ...
FROM tbl_product ta
LEFT JOIN tbl_transaction tb ON (tb.product_id=ta.product_id LIMIT 5)
LIMIT 10
Bien sûr, cela est illégal, mais je veux vraiment que ce n'était pas!
Vous n'avez aucune clause "ON" pour votre jointure? –
Même avec la clause ON, il récupère toujours plus de 5 transactions. Si je supprime le 'tx.product_id = ta.product_id' et que je le modifie en' LEFT JOIN (* mes limites sql *) tb ON tb.product_id = ta.product_id', toujours pas ce que je veux ~ –
Est-ce que votre table de transaction 'tbl_transaction 'avoir un identifiant? – gnarf