私はこのようなテーブルを持っています
name | apples | actual_apples
-----------------------------
John | 5 | 10
-----------------------------
Dave | 3 | 4
これは、count() を使用して、リンゴを持っている人をクエリすることでわかります!= 実際のリンゴの数。
私がやりたいことは、これらの行を変更し、apples = actual_apples
返される行ごとに設定することです。
どうすればこのようなことを達成できますか? apples プロパティを更新しようとしましたが、明らかに複数の値を返すものに属性を設定することはできません
(各リンゴは独自の識別子で一意であると仮定してください。それが私がそれらを数えることができる方法です)
Person {name,age,apples}
has {name(FK(Person)),id(FK(Apples))}
Apples {id,type}
apples 属性は、人が持っているリンゴの数です。誰かがデータを入力して設定しただけで、間違っている可能性があります。
誰かが持っているリンゴの実際の数は、数えることで取得できます (これは、上記のテーブルを取得するために使用するクエリです)
select p.name, p.apples, count(h.id) as actual_apples
from Person p, has h
where p.name = h.name
group by p.name, p.apples
having apples != count(h.id)