0

login_id に従って 3 つのテーブルからユーザーの名前とその code_number を取得するためのクエリを作成しようとしています。login、tutors、institutes、students という名前の 4 つのテーブルがあります。

これは私のテーブルの構造です。

ログインテーブル
login_id
login_type

家庭教師テーブル
tutor_id
login_id
tutor_name
tutor_code

institute テーブル
institute_id
login_id
institute_name
institute_code

学生テーブル
student_id
login_id
student_name
student_code

ユーザーがサイト login_id にログインして SESSION を保存すると、ログインしたユーザーの種類を確認し、ユーザーを特定した後、ユーザーの名前とコードにログインする必要があります。

私の問題は、どのユーザー (チューター、インスティテュート、学生の場合) がサイトにログインしているかを確認する方法と、その名前とコードを取得する方法です。

誰かがこれについて私を助けてくれることを願っています...ありがとう。

4

2 に答える 2

2

CASELogin_Type をチェックしてそれを行う 1 つの方法を次に示します。

SELECT 
    CASE Login_Type
        WHEN 'Tutor' THEN Tutor_Name
        WHEN 'Institute' THEN Institute_Name
        WHEN 'Student' THEN Student_Name
    END Name, 
    CASE Login_Type
        WHEN 'Tutor' THEN Tutor_Code
        WHEN 'Institute' THEN Institute_Code
        WHEN 'Student' THEN Student_Code
    END Code
FROM Login L
    LEFT JOIN Tutor T ON L.Login_Id = T.Login_Id
    LEFT JOIN Institute I ON L.Login_Id = I.Login_Id
    LEFT JOIN Student S ON L.Login_Id = S.Login_Id

幸運を。

于 2013-02-11T16:22:41.760 に答える
2

nameandを返したい場合は、テーブルcodeだけでかまいません。JOINクエリは次のようになります。

select l.login_id,
  l.login_type,
  coalesce(t.tutor_name, i.institute_name, s.student_name) Name,
  coalesce(t.tutor_code, i.institute_code, s.student_code) Code
from login l
left join tutor t
  on l.login_id =t.login_id
left join institute i
  on l.login_id = i.login_id
left join student s
  on l.login_id = s.login_id

COALESCEは、null 以外の最初の値を返します。tutorログインがいずれかのテーブルにのみ属することができる場合、これを使用すると、ユーザーが、instituteまたはであっても正しい値が返されますstudent

これを別々の列で返したい場合は、次を使用できます。

select l.login_id,
  l.login_type,
  t.tutor_name,
  t.tutor_code,
  i.institute_name,
  i.institute_code,
  s.student_name,
  s.student_code
from login l
left join tutor t
  on l.login_id =t.login_id
left join institute i
  on l.login_id = i.login_id
left join student s
  on l.login_id = s.login_id
于 2013-02-11T16:18:42.247 に答える