2017-06-27 15 views
0

現在、いくつかの異なるテーブルの行の量を示すMySQLステートメントの結果を集計しようとしています。UNIONを使用したSELECT COUNTステートメントからSUMテーブルへのSQLクエリ

私はすでに、この問題に関するすべてのスタックオーバーフローのソリューションを研究しました。残念ながら、私は私の場合の正しい構文を理解することができません。結果と

私の作業文がまとめない

SET @shipmentId=456; 
SELECT 
     (SELECT COUNT(*) FROM Table1 WHERE ShipmentID = @shipmentId) 
     UNION ALL 
     (SELECT COUNT(*) FROM Table2 WHERE ShipmentID = @shipmentId) 
     UNION ALL 
     (SELECT COUNT(*) FROM Table3 WHERE ShipmentID = @shipmentId) 
     UNION ALL 
     (SELECT COUNT(*)FROM Table4 WHERE ShipmentID = @shipmentId) 
     UNION ALL 
     (SELECT COUNT(*)FROM Table5 WHERE ShipmentID = @shipmentId); 

が私の意見では、これが正解に最も近いする必要がありますが、私はよく分からない(亜種の多くを試してみました):

SET @shipmentId=456; 
SELECT SUM(MeasuredValues) FROM 
    SELECT(
     (SELECT COUNT(*) FROM Table1 WHERE ShipmentID = @shipmentId) AS MeasuredValues 
     UNION ALL 
     (SELECT COUNT(*) FROM Table2 WHERE ShipmentID = @shipmentId) AS MeasuredValues 
     UNION ALL 
     (SELECT COUNT(*) FROM Table3 WHERE ShipmentID = @shipmentId) AS MeasuredValues 
     UNION ALL 
     (SELECT COUNT(*)FROM Table4 WHERE ShipmentID = @shipmentId) AS MeasuredValues 
     UNION ALL 
     (SELECT COUNT(*)FROM Table5 WHERE ShipmentID = @shipmentId) AS MeasuredValues) t1;  

ご協力いただきありがとうございます。あなたは単にあなたの選択をまとめることができ StackOverFlow Solution1

StackOverFlow Solution2

答えて

1

:私のSQL構文は戦う解決

SET @shipmentId=456; 
SELECT 
    (SELECT COUNT(*) FROM Table1 WHERE ShipmentID = @shipmentId) 
+ 
    (SELECT COUNT(*) FROM Table2 WHERE ShipmentID = @shipmentId) 
+ 
    (SELECT COUNT(*) FROM Table3 WHERE ShipmentID = @shipmentId) 
+ 
    (SELECT COUNT(*) FROM Table4 WHERE ShipmentID = @shipmentId) 
+ 
    (SELECT COUNT(*) FROM Table5 WHERE ShipmentID = @shipmentId); 
+0

感謝

は、すでに以下のリンクを試してみました! –

関連する問題