2016-03-19 15 views
0
SELECT pa.prid,pa.prodid,pa.prva, ps.psna,ps.psnamid,ps.psval 
    FROM (SELECT pid,prodid,count(prodid) as prid , 
      sum(prval) as prva 
      FROM prodarpa 
      WHERE fcl = 1 GROUP BY prodid 
    UNION SELECT pid,prodid,count(prodid) as prid , 
      sum(prval) as prva 
      FROM prodarpb 
      WHERE fcl = 1 GROUP BY prodid) AS pa 
    LEFT JOIN (SELECT psid,psnamid,count(psnamid) as psna,SUM(psvalue) as psval 
       FROM prosection GROUP BY psnamid) AS ps 
       ON (pa.pid = ps.psid) 

は、そこで私は以下のようになりたい:数、MySQLでのメインテーブル(労働組合)とその左表の両方の合計

pa.prid | pa.prodid | pa.prva | ps.psna | ps.psnamid | ps.psval 
193  3   300  193   2   499 
200  5   100  0   0   0 
    0   0   0  201   8   300 
163  10   678  163   5   453 

pa.prid値がされていない場合はどう私が意味することはありますps.psnaそれは別の方法

に0 PS表の各列の値と同じものを示すべきであるが、そのは

+0

ここいずれか?? – user3209031

答えて

0

Withoが起きていませんこれから作業するデータは推測です。

SELECT 
     pa.prid 
    , pa.prodid 
    , pa.prva 
    , ps.psna 
    , ps.psnamid 
    , ps.psval 
FROM (
     SELECT 
      pid 
      , prodid 
      , COUNT(prodid) AS prid 
      , SUM(prval) AS prva 
     FROM (
      SELECT 
        pid 
       , prodid 
       , prval 
      FROM prodarpa 
      WHERE fcl = 1 
      UNION ALL 
        SELECT 
         pid 
         , prodid 
         , prval 
        FROM prodarpb 
        WHERE fcl = 1 
      ) AS s 
     GROUP BY 
      pid 
      , prodid 
    ) AS pa 
     LEFT JOIN (
      SELECT 
        psid 
       , psnamid 
       , COUNT(psnamid) AS psna 
       , SUM(psvalue) AS psval 
      FROM prosection 
      GROUP BY 
        psid 
       , psnamid 
    ) AS ps ON (pa.pid = ps.psid) 

グループを使用するときは、必ずは、すべての非集計列を指定することによって、注意してください。 MySQLはこれが必須ではない構文を提供しますが、その構文を使用した結果は信頼できず、ONLY_FULL_GROUP_BYが有効な場合にのみ構文が許可されます。

は、以下を参照してください。https://dev.mysql.com/doc/refman/5.0/en/group-by-handling.html

+0

ありがとうございます。しかし、クエリの上に1つの質問が実行されます...私は両方のテーブルにレコードのlacs以上を持っている場合 – user3209031

+0

"lac"は、世界的に使われている測定単位ではありません。しかし、テーブル内の100,000行はあまり大きくありませんが、クエリの実行速度を教えてくれません。リソースが不足しているVMや、わからないオーバースペックのサーバーアレイで実行することができます –

関連する問題