2017-04-09 21 views
-1

私は質問に苦労しています。私は誰かが助けることを望んでいます。このようなMySQLクエリを作成するにはどうすればよいですか?

は、私は2つのテーブルのフィールドSaleUUIDが、テーブルの売却により関連しているSale & SaleLineも持っている親UUIDあるOriginalSaleUUIDフィールドを持っています。私が達成しようとしています何

が一緒に返された数量と特定の販売商品とその数量のリストを表示することです(0これは、1のリターンまたは複数のリターンを販売& SaleLineテーブルにレコードを意味しない、返すことができアイテムとセール)。

これは意味があると思います。

表販売:

SaleUUID OriginalSaleUUID 
1 
2   1 
3   1 

表SaleLine:

SaleLineUUID SaleUUID SaleLineItemName SaleLineQuantity 
1    1   Item A    3 
2    1   Item B    1 
3    2   Item A    1   
4    3   Item A    1 

期待される結果:最後の試みだ

Item Name Item Quantity Item Quantity (Return) 
Item A  3    2 
Item B  1    0 

。私はすでに実用的な解決策なしですでに数時間を費やしています。両方の項目で同じ結果が得られますが、最初の項目のみが戻ります。

SELECT 
    SL1.SaleLineItemName, 
    SL1.SaleLineQuantity, 
    COALESCE((
    SELECT 
(SL2.SaleLineQuantity) 
    FROM 
     Sale S2, SaleLine SL2 
    WHERE 
     S2.SaleUUID = SL2.SaleUUID 
     AND S2.OriginalSaleUUID = S1.SaleUUID), 0) 
    FROM 
     Sale S1, 
     SaleLine SL1 
    WHERE 
     S1.SaleUUID = SL1.SaleUUID 
     AND S1.SaleUUID = ? 

答えて

0
SELECT what_you_need, SUM(IF(OriginalSaleUUID IS NULL, SaleLineQuantity, 0)) quantity, SUM(IF(OriginalSaleUUID IS NOT NULL, SaleLineQuantity, 0)) ret 
FROM SaleLine 
JOIN Sale USING(SaleUUID) 
GROUP BY IFNULL(OriginalSaleUUID, SaleUUID), SaleLineItemName 

また、使用する代わりにWHERE条件を介して2つのテーブルを結合する(https://dev.mysql.com/doc/refman/5.7/en/join.html)合流します。それは「現代的な」構文です。

+0

Viliamありがとうございますが、USING、IFNULL、およびIFがサポートされていないFileMakerでSQLを使用しようとしています。 IFNULLの代わりに私はCOALESCEを使うことができますがUSINGについてはわかりません。それ以外はすべてサポートされています。 のFileMaker 15 SQLリファレンス - サポートされている規格:https://fmhelp.filemaker.com/docs/15/en/fm15_sql_reference.pdf –

+0

@SebastijanB:代わりにあなたがONの販売を登録しようかすることができます使用するSale.SaleUUID = SaleLine.SaleUUID 。 USINGは単なる「エイリアスのショートカット」です。私はFileMakerがケースをサポートしているようだ。 IF/IFNULLをシミュレートするために使用することができます - OriginalSaleUUIDがNULLの場合、SaleLineQuantity ELSE 0 END ... –

関連する問題