Как передать динамический параметр в MySQL представлении

Я создал это в MySQL

CREATE VIEW MYVIEW AS (
SELECT A.FNAME
     , A.LNAME
     , B.EMAIL
FROM EMPLOYEE A, EMPEMAIL B
WHERE A.EID = :empId
  AND A.EID = B.EID
AND B.EMAILTYP = :emailType)

теперь я хочу сделать динамические " empId " и " emailType ". Я имею в виду передать значение в выбранное время. что нужно менять в коде?? спасибо заранее

3 ответа

Решение

Просто создайте представление без параметров (т.е. позаботьтесь только о соединении):

CREATE VIEW MYVIEW AS (
SELECT A.FNAME
     , A.LNAME
     , B.EMAIL
     , A.EID AS EID
     , B.EMAILTYP AS EMAILTYP
FROM EMPLOYEE A, EMPEMAIL B
WHERE A.EID = B.EID)

И применять динамические параметры при запросе:

SELECT FNAME, LNAME, EMAIL
FROM   my_view
WHERE  eid = :empId AND emailtyp = :emailType

Вы можете использовать это решение с функцией -

CREATE FUNCTION func() RETURNS int(11)
  RETURN @var;

CREATE VIEW view1 AS
  SELECT * FROM table1 WHERE id = func();

Используя пример:

SET @var = 1;
SELECT * FROM view1;

Представления MySQL ведут себя как таблица;

Скажите, что ваша точка зрения;

      CREATE VIEW view_fetch_part_data AS
SELECT 
p.new_study_no, 
p.study_no AS fk_part, 
p.is_participant_available, 
p.part_unavailable_reason, 
p.name, 
p.sync_date AS part_syncdate,
ca.timepoint, 
ca.is_participant_available AS ca_participant_available, 
ca.part_unavailable_reason AS ca_part_unavailable_reason,  
ca.last7days_child_symptoms, 
ca.illness_timeOff_days, 
hm.names AS hm_names, 
hm.age AS hm_age, 
hm.sex AS hm_sex, 
hm.relationship, 
FROM participants p 
LEFT JOIN clinical_assessments ca
ON p.study_no = ca.fk_part 
LEFT JOIN hh_members hm
ON p.study_no = hm.fk_part 
LEFT JOIN hh_rooms hr
ON p.study_no = hr.fk_part ;

Выполнив это, вы получите;

      SELECT * FROM view_fetch_part_data

Затем примените предложение where, как обычную таблицу;

      SELECT * FROM view_fetch_part_data WHERE fk_part = 211123;
Другие вопросы по тегам