web-dev-qa-db-ja.com

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」を動的にします。つまり、選択した時間に値を渡します。コードで何を変更する必要がありますか?よろしくお願いします

6
java baba

パラメータなしでビューを作成するだけです(つまり、結合のみを処理します):

CREATE VIEW MYVIEW AS (
SELECT A.FNAME
     , A.LNAME
     , B.EMAIL
     , A.EID AS EID             -- added to be used in the WHERE
     , B.EMAILTYP AS EMAILTYP   -- added to be used in the WHERE
FROM EMPLOYEE A, EMPEMAIL B
WHERE A.EID = B.EID)

そして、クエリを実行するときに動的パラメータを適用します。

SELECT FNAME, LNAME, EMAIL
FROM   my_view
WHERE  eid = 'your_empId' AND emailtyp = 'your_emailType'

上記のWHEREに注意してください。これは、VIEWで宣言された2つの追加フィールドを使用します。

8
Mureinik

このソリューションは関数で使用できます-

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

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

例を使用して:

SET @var = 1;
SELECT * FROM view1;
10
Devart