1

イベントの登録を処理する、学校用のイベント システムを作成しました。

学生だけがサイトにサインアップできるようにしたいので、potentialusersというテーブルを用意しました。すべてのエントリには、FullName と Email があります。ユーザーがサイトにサインアップすると、サイトは学生の電子メールが potentialusers テーブルにあるかどうかを確認し、ある場合はユーザーをusersテーブルに追加します。

registrationsというテーブルもあります。ユーザーがイベントに登録するたびに、このテーブルに追加されます。エントリは次のようになります: registrationideventid (イベント テーブルへの外部キー)、userid (潜在的なユーザーではなく、ユーザー テーブルへの外部キー)。

LIKE ステートメントを使用して名前を検索し、ユーザーの結果リスト、ユーザーがイベントに登録されているかどうかを示す列、およびユーザーが登録されているかどうかを示す列を取得したいと考えています。

これは私が試したことです(中括弧でいくつかのコメントを追加しました):

SELECT FullName, Email from potentialusers
LEFT OUTER JOIN registrations ON (potentialusers.Email = registrations...{1})
WHERE events.eventid = '7'{2} AND potentialusers.Email LIKE = '%jazerix%';

{1} -> 最初の問題は、登録テーブルにメール列が含まれておらず、メールを含むユーザー テーブル内のユーザーへの参照のみであるためです。

{2} -> イベントを分離できるように、7 は単なる例です。

最後に、次のようなものを返したいと思います。

エクセルでごめんなさい

4

3 に答える 3

1
SELECT potentialusers.FullName, potentialusers.Email
, IF(users.userid IS NULL, 'False', 'True') Registered
, registration.registrationid
FROM potentialusers
LEFT JOIN users
  ON potentialusers.Email = users. useremail
LEFT JOIN registrations
  ON registrations.userid = users.id
WHERE potentialusers.Email LIKE '%jazerix%'
  AND registrations.eventid = 7;
于 2013-10-03T21:32:41.530 に答える
1

これを試してください:

SELECT
  p.FullName,
  p.Email,
  IF(u.userid IS NULL, 'False', 'True') RegisteredInSystem,
  IF(r.registrationid IS NULL, 'False', 'True') RegisteredInEvent
FROM potentialusers p
LEFT JOIN users ON p.Email = u.useremail
LEFT JOIN registrations r ON r.userid = u.id AND r.eventid = 7
WHERE p.FullName LIKE '%jazerix%'
于 2013-10-03T22:17:51.410 に答える
0

私はそれがこのようであるべきだと思います

select 
pus.fullname,
rg.email,
case (select count(*) from registrations where usr.id=foreignkey_connection_to_this_table)
when 0 then 'FALSE'
when 1 then 'TRUE'
else 'MULTIPLE REGISTRATIONS'
end as registered,
rg.id as registration_id
from potentialusers pus 
join users usr using(foreign key connection to this table)
join event evt using(foreign key connection to this table)
join registrations rg using(foreign key connection to this table)
WHERE events.eventid = '7' AND potentialusers.Email LIKE = '%jazerix%';

私はあなたのデータベースモデルを知らないので、「疑似」SQLでそれを白くします。いくつかの修正を行う必要があります。

于 2013-10-03T21:46:58.070 に答える