Как написать SQL-запрос? - PullRequest
0 голосов
/ 25 марта 2011

У меня есть таблица:

lecturer
  lec_name
  s_code
  lec_pass
  ph_no

proposal_info
  metric,stu_name
  p_title
  u_proposal

apply_supervisor
  metric
  lec1
  lec2
  lec3

Теперь я хотел бы присоединиться к этим трем таблицам таблицы и отобразить все данные в таблице offer_info только для того конкретного лектора, который входит в систему. Как войти. Как написать SQL-запрос для этого? Это запрос, который я написал ...

select p.metric,p.stu_name,p.p_title,p.u_proposal 
from proposal_info p 
    INNER JOIN apply_supervisor a 
    ON p.metric = a.metric 
        JOIN lecturer s 
        ON a.lec1 = s.s_code 
        or a.lec2 = s.s_code 
        or a.lec3 = s.s_code 
where s.s_code = s_code;

Ответы [ 2 ]

0 голосов
/ 25 марта 2011
Select P.metric, P.stu_name, P.p_title, P.u_proposal
From proposal_info As P
Where Exists    (
                Select 1
                From apply_supervisor As A
                Where A.metric = P.metric
                    And (
                        A.lec1 = 'some lecturer code'
                        Or A.lec2 = 'some lecturer code'
                        Or A.lec3 = 'some lecturer code'
                        )
                )

В комментариях вы упомянули, что используете MySQL.Учитывая, что MySQL не очень хорош в обработке коррелированных подзапросов.Однако вы можете легко переписать приведенный выше запрос следующим образом:

Select P.metric, P.stu_name, P.p_title, P.u_proposal
From proposal_info As P
Where P.metric In   (
                    Select A.metric
                    From apply_supervisor As A
                    Where A.lec1 = 'some lecturer code'
                        Or A.lec2 = 'some lecturer code'
                        Or A.lec3 = 'some lecturer code'
                    )
0 голосов
/ 25 марта 2011

Я не совсем понял, что вам нужно, но из того, что я понял, я создал это.

select p.metric,p.stu_name,p.p_title,p.u_proposal from proposal_info p INNER JOIN
apply_supervisor a ON p.metric = a.metric where 
lec1 = @s_code or 
lec2 = @s_code or 
lec3 = @s_code

Проверьте, может ли это вам помочь.

Где @s_code - входной параметр, который необходимо заменить значением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...