sql >> データベース >  >> RDS >> Mysql

動的に変化する列で2つのテーブルを結合する

    これは、いくつかの理由でMySQLで行うのが面倒です。まず、MySQLは、比較したい累積合計をあまりサポートしていません。

    そして第二に、あなたの結果セットは少し弱いです。 すべてを表示する方が理にかなっています insoutsに寄与するレコード そのうちの1つだけでなく、記録します。

    この目的のために、次のような累積合計の結合を使用できます。

    select o.*, (o.to_quantity  - o.quantity) as from_quantity,
           i.*
    from (select o.*,
                 (select sum(o2.quantity)
                  from outs o2
                  where o2.id <= o.id
                 ) as to_quantity
          from outs o
         ) o join
         (select i.*,
                 (select sum(i2.quantity)
                  from ins i2
                  where i2.id <= i.id
                 ) as to_quantity
          from ins i
         ) i
         on (o.to_quantity  - o.quantity) < i.to_quantity and
            o.to_quantity > (i.to_quantity  - i.quantity)
    

    こちら SQLフィドルです。



    1. SQLServerデータベースオブジェクトの統計

    2. MySQLでテーブルの名前を変更します

    3. OracleでMicrosoftEntityFrameworkを使用できますか?

    4. Hibernateは結合テーブルを作成しません