0

私は特定の会議に出席している参加者を支援するプロジェクトに取り組んでいます。会議のイベントと、指定されたユーザーがこのイベントに参加しているかどうかを取得するためのクエリに取り組んでいます。ユーザーがイベントに参加しているかどうかを追跡するために、結合テーブル(Events_Users)があるため、タスクを実行する方法がわかりません。イベントのすべての情報を選択して、そのユーザーがその会議に参加しているかどうかを指定する追加の列「isAttending」(データベースには存在しません)とともに返すことができる必要があります。

返される結果は次のようになります。

| event.id | isAttending |
|     1    |      1      |
|     2    |      0      |
|     3    |      0      |

これは可能ですか?(userIdが渡されるので、それをチェックして'isAttending'がtrueかfalseかを判断できます)。

ちなみに、私たちはすでに2つの別々の呼び出し(getAllEventsとisUserAttending)を試みました。ただし、これらの呼び出しは非同期であるため、必要な情報を取得するのに問題があります(詳細はわかりません)。

ありがとうございました!

4

1 に答える 1

0

これらのテーブルがあると仮定します

Events : id , other columns
Event_Users : event_id , user_id
Users : id , username

これがあなたにアイデアを与えるクエリです。null の場合は値を 0 に設定し、それ以外の場合は IFNULL で 1 を設定します。

SELECT
  e.id,
  IFNULL(u.username,0,1) as isAttending
from `Events` as e
  LEFT JOIN Events_Users as eu ON eu.events_id = e.id
  LEFT JOIN users as u ON u.id = eu.user_id
where u.id = 1

ここで、1 は動的に置き換えることができる特定のユーザー ID です。

于 2013-02-07T18:51:34.113 に答える