1

私はdbからいくつかのデータを取得しようとしています。

  1. usernameログインテーブルから
  2. email連絡表から

2 つのテーブルの 2 つの値でチェックしtutorinstitute

これはこれまでの私のコードです:

SELECT s. * , c.email, l.username
FROM (
        SELECT  contact_id AS id, 
                  login_id, 
                  username, 
                  tutor_code AS code, 
                  tutor_name AS Name, 
                  'tutor' AS profile
        FROM tutors
        WHERE tutor_code = $code AND tutor_name = '$name'
        UNION ALL
        SELECT  contact_id AS id, 
                  login_id, 
                  username, 
                  institute_code AS code, 
                  institute_name AS Name, 
                  'institute' AS profile
        FROM institutes
        WHERE institute_code = $code AND institute_name = '$name'
        )
INNER JOIN contact c ON s.id = c.contact_id
INNER JOIN login l ON s.login_id = l.login_id

このクエリは機能せず、エラー メッセージが表示されます。

1054 - 「フィールド リスト」の不明な列「ユーザー名」

アップデート

SELECT s. * , c.email, l.username
FROM (
        SELECT  contact_id AS id, 
                  login_id, 
                  username, 
                  tutor_code AS code, 
                  tutor_name AS Name, 
                  'tutor' AS profile
        FROM tutors
        WHERE tutor_code = $code AND tutor_name = '$name'
        UNION ALL
        SELECT  contact_id AS id, 
                  login_id, 
                  username, 
                  institute_code AS code, 
                  institute_name AS Name, 
                  'institute' AS profile
        FROM institutes
        WHERE institute_code = $code AND institute_name = '$name'
        )s
INNER JOIN contact c ON s.id = c.contact_id
INNER JOIN login l ON s.login_id = l.login_id
4

3 に答える 3

1

usernameから取得しているように見えるためlogin、列はおよび/またはにusername存在しない可能性が高く、 に参加しているため、 への結合も必要ありません。サブクエリから列を削除するだけでよいと思います。tutorsinstitutesloginlogin_idusername

SELECT s. * , c.email, l.username
FROM (
        SELECT  contact_id AS id, 
                  login_id, 
                  --username, 
                  tutor_code AS code, 
                  tutor_name AS Name, 
                  'tutor' AS profile
        FROM tutors
        WHERE tutor_code = $code AND tutor_name = '$name'
        UNION ALL
        SELECT  contact_id AS id, 
                  login_id, 
                  --username, 
                  institute_code AS code, 
                  institute_name AS Name, 
                  'institute' AS profile
        FROM institutes
        WHERE institute_code = $code AND institute_name = '$name'
        ) s
INNER JOIN contact c ON s.id = c.contact_id
INNER JOIN login l ON s.login_id = l.login_id

sまた、エイリアスがないと構文エラーがスローされるため、省略はタイプミスであると想定しているため、サブクエリにエイリアスを追加しました

于 2013-05-03T12:34:35.837 に答える