Как передать динамический параметр в 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;