次の MySQL テーブルを検討してください。
MORTALITY (死亡した子豚を飼っている飼育者を含む)
raiserID | issuedDate | rotationNo | numberDead
-----------------------------------------------------
0052 2012-08-03 1 3
PIGLET_PO (飼育者による子豚取引の購入を含む)
~ レイザーはここに複数のレコードを持つことができます
raiserID | deliveredDate | rotationNo | noOfDeliveredPigs | sellerID
------------------------------------------------------------------------------
0052 2012-07-20 1 10 1
0052 2012-07-21 1 15 1
SELLER_LIST
sellerID | sellerName
------------------------
1 Solar Farm
期待される結果:
sellerName | population | deceased
-----------------------------------------
Solar Farm 25 3
- Raiser は、豚/豚の世話をする/育てる人です。
- rotationNo は、調達者が実施した、または現在実施中の調達サイクルを参照する一意の識別子です。
これまでのところ、予想される結果と同様の結果が得られる次のクエリがあります。よくわかりませんが、piglet_po に 2 つのレコード/行があることに関係があると思います。ここで何が欠けていますか?
SELECT s.sellerName AS sellerName, SUM(p.noOfDeliveredPigs) AS population, SUM(numberDead) AS heads
FROM mortality m
JOIN piglet_po p
ON m.raiserid = p.raiserid
AND m.rotationNo = p.rotationNo
JOIN seller_list s
ON p.sellerID = s.sellerID
// This WHERE condition and the given string value that follow came from and is based on
a select drop-down box and shouldnt be modified since this is how I display them in html
WHERE DATE_FORMAT(m.issuedDate, '%M %Y') = 'August 2012'
GROUP BY sellerName
HAVING SUM(numberDead) != 0