これらのフィールドを持つ「接続」というテーブルがあります。
entry_id
user_id
connector_id
cat_id
いくつかの行を入れてみましょう
| entry_id | user_id | connector_id |cat_id |
|:---------|---------|:------------:|:------------:|
| 1 | 11| 33 | 1
| 2 | 13| 11 | 2
| 3 | 9| 11 | 4
| 4 | 11| 33 | 6
| 5 | 33| 11 | 11
| 6 | 9| 11 | 8
疑似コード
(id = 11 と oid = 9 の間の接続を使用)
Select cat_id FROM connections c
if cat_id is between 1 and 5
where c.connector_id = id OR c.user_id = id
AND c.connector_id = oid OR c.user_id = oid
else if cat_id is greater than 5
where oid = user_id and id = connector_id
英語で;
cat_id が 1 ~ 5 の場合、oid と id の両方が connector_id または user_id にある cat_id を選択する必要があります。どちらか一方にある限り、順序は関係ありませんが、cat_id が 1 より大きい場合5 では、oid が user_id で id が connector_id である cat_ids のみを選択する必要があります。
結果 (id = 11 と oid = 9 の間の接続の場合)
| cat_id |
|:-----------|
| 4 |
| 8 |
もう 1 つの例:
結果 ( id = 33 と oid = 11 の間の接続の場合)
| cat_id |
|:-----------|
| 1 |
| 6 |
不明な点は質問してください。