La restriction d'une JOINTURE SQL
Je suis en train d'essayer de limiter l'instruction SQL suivante.
SELECT expense.*, transaction.* FROM expense
INNER JOIN transaction ON expense_id = transaction_expense_id
Ce que je veux faire, c'est de limiter le nombre de "parent" des lignes. C'est à dire. si je fais une LIMITE de 1, je voudrais recevoir un seul poste de dépenses, mais encore obtenir toutes les transactions qui y sont associées.
Comment ceci pourrait-il être atteint?
À ce stade, si je ne LIMITE 1, j'ai obtenu une charge, et une seule transaction.
- Je suis peut-être bête, mais n'avez-vous pas besoin d'inclure l'utilisateur table dans le rejoindre quelque part?
- comme @rixth souligné, vous avez besoin pour bénéficier de votre joint à toutes les tables impliquées dans la sélection...
- Oups, j'ai oublié l'utilisateur table était là! Erreur de ma part, la quête a été corrigé.
- SQL Server? En 2005?
- MySQL 5.0 (needtogetto10characters)
Vous devez vous connecter pour publier un commentaire.
Donc, en supposant que l'on ne peut exclure la table utilisateur, il peut être réécrite comme:
Maintenant, si vous voulez appliquer une limite, vous pouvez le faire comme ceci:
Voudrais que vous vouliez faire quoi? Évidemment, vous devez être prudent sur ce que l'ordre de votre expense_ids allons de revenir, alors vous avez probablement besoin d'utiliser la COMMANDE PAR quoi que ce soit.
Edit: compte tenu de la limite MySQL décrit dans votre commentaire ci-dessous, peut-être que cela va fonctionner:
Ben
Vous aurez à spécifier qui frais élément que vous souhaitez obtenir. Le plus cher? Le plus récent? Ensuite se joindre à l'encontre d'une sous-requête qui retourne seulement:
WHERE ... LIMIT 10) AS expense
. Je pense que.Depuis la mise à niveau de SQL server n'est pas une option, je peut faire deux requêtes.