1

こんにちは、私はテーブルを持っています:

from | to   | item | count
-------
Jack | Danie| food | 10
Danie| Maria| food | 2
Jack | Peter| drink| 9
Jack | Danie| water| 1
Danie| Jack | food | 3
Jack | Alise| baks | 4

ジャックの「アイテム」の数を見つけるにはどうすればよいですか?

私のコード:

select sum( q1.count) as s  from (
            SELECT count, item  FROM item_movements WHERE  to = 3
            union All
            SELECT  count*-1, item  FROM item_movements WHERE from =3
            ) q1
group by item
having sum(q1.count) > 0 

私の考え:すべてのアイテムを取得し、すべてのアイテムを取得し、それを結合し、合計し、カウントしますが、select count()を追加すると...機能しません。

4

1 に答える 1

0

サブクエリなし:

SELECT SUM( IF( `from` = 'Jack', `count`, `count` * -1 ) ) `delta`
FROM `item_movements`
WHERE `from` = 'Jack' OR `to` = 'Jack'

('Jack' と 'Jack' の間に何らかの動きがある場合、これは失敗します)

于 2013-03-19T07:04:42.810 に答える