8
votes

Somme sur une jointure gauche SQL

J'ai deux tables que je souhaite participer à laisse dire Tableau A et Tableau B. Le tableau B a de nombreuses lignes à table A, tableau B contient des prix (efficacement d'un panier). Donc, ce que je veux, c'est que tous les enregistrements du tableau A et la somme du prix du tableau B. J'ai essayé xxx

Cependant, cela ne fait évidemment pas comme je le souhaite, cela finit par la somme totale de tous ACH_SELL (donc un enregistrement est renvoyé). Quelqu'un voudrait-il me proposer une solution qui aiderait? À l'heure actuelle, je le fais de manière programmative et je suis sûr que cela pourrait être fait dans SQL?


1 commentaires

Est-il pratique de faire une union?


5 Réponses :


0
votes

Vous devez groupe par quelque chose si vous ne voulez pas juste un seul résultat. Éventuellement? XXX

D'autres RDBMSS insisteraient pour vous avoir la liste de colonnes entière dans le groupe par mais mysql pas.


0 commentaires

1
votes
select a.*, sum(b.ach_sell) as sum_column 
from bookings a 
  left join pricing_line b
         on b.bookings = a.id
group by a.id
Every time you use funcions of aggregation (SUM, COUNT, MIN, MAX, AVG) you need to group by some other set of fields (tipically the id) on which you don't apply an aggregation function.

0 commentaires

2
votes

Groupe sur les champs de la table des réservations:

select a.this, a.that, sum(b.ach_sell)
from bookings a 
left join pricing_line b on b.bookings = a.id
group by a.this, a.that


1 commentaires

J'ajouterais "Somme (b.ach_sell) comme sommaire_column" pour une adressage plus facile.



15
votes

Votre direction a raison, ajoutez simplement un groupe par clause pour séparer les A.ID, quelque chose comme ceci: xxx


0 commentaires

0
votes

Si vous avez de nombreuses colonnes dans SELECT.

Comme ceci: P>

SELECT
    co.checkOutOrderID,
    com.companyCode,
    sd.serviceDispatchCode,
    cu.customerName,
    com.companySimp,
    ISNULL(SUM (sdlp.partsModelPrice * sdlp.partsModelNum), 0) AS total
FROM
    checkoutorder co
LEFT JOIN 
    servicedispatchorder sd ON sd.serviceDispatchID = co.serviceDispatchID
LEFT JOIN 
    customer cu ON cu.customerID = co.customerID
LEFT JOIN 
    company com ON com.companyID = co.companyID
LEFT JOIN 
    servicedispatchlinkparts sdlp ON sdlp.serviceDispatchID = sd.serviceDispatchID
GROUP BY
    sd.serviceDispatchID, co.checkOutOrderID, 
    com.companyCode, sd.serviceDispatchCode,
    cu.customerName, com.companySimp


0 commentaires