私は現在、多対多および1対多の関係を含む非常に大きなプロジェクトに取り組んでいます...作業するテーブルがいくつかあり、自分がやりたいことをどのように行うかがわかりません。これが私の最初のテーブル(オブジェクトテーブル)です:
+-----------+------+-------+
| Object ID | Name | Value |
+-----------+------+-------+ The Object ID is a foreign Key to another table.
| 1 | Aaaa | 2 | The Name is unique for each Object ID.
| 1 | Bbbb | 5 |
| 2 | Aaaa | 15 |
| 2 | Bbbb | 3 |
+-----------+------+-------+
私の2番目のテーブルは次のとおりです(ユーザーテーブル):
+---------+------+-------+
| User ID | Name | Value |
+---------+------+-------+ The User ID is also a foreign Key, there are
| 7 | Aaaa | 10 | multiple rows with the same User ID.
| 7 | Bbbb | 7 |
+---------+------+-------+
他のテーブル間の関係を示す3番目のテーブルがあります
+---------+-----------+
| User ID | Object ID |
+---------+-----------+ There are no identical rows in this table.
| 7 | 1 |
+---------+-----------+
ユーザーが持っているオブジェクトテーブル内のすべてのオブジェクトを見つけようとしています。ユーザーはすべてのオブジェクト名を持っている必要があります。また、名前ごとに、ユーザーの値は少なくともその名前のオブジェクトの値である必要があります。
たとえば、ここでは、ユーザーは値10のAaaaと値7のBbbbを持っています。したがって、ユーザーはオブジェクト1のすべての名前を持っており、彼の値はそれらの値以上です。したがって、彼はオブジェクト番号1を持つことができます。オブジェクト2の場合、ユーザーはAaaaを十分に持っていないため、オブジェクト2を持つことはできません。
ユーザーが名前を持ち、内部結合で十分な値を持つオブジェクトテーブルのすべての行を取得する方法を知っています:
SELECT Users.User ID, Objects.Object, Objects.Name ID FROM Objects
INNER JOIN Users
ON Objects.Name = Users.Name AND Objects.Value <= Users.Value
しかし、問題はそれが以下を返すことです:
+---------+-----------+------+
| User ID | Object ID | Name |
+---------+-----------+------+
| 7 | 1 | Aaaa |
| 7 | 1 | Bbbb |
| 7 | 2 | Bbbb |
+---------+-----------+------+
問題は、ユーザーがオブジェクト2に十分なAaaaを持っていないため、ここで最後の行を削除したいということです。
どんな助けでも大歓迎です!ありがとう