2017-08-14 53 views
-1

は、私のテーブル構造である:パラメータを必要とするビューを作成するにはどうすればよいですか?ここ

Create View `user` as 
SELECT u.id, u.name, u.email 
     ud.age, ud.about, ud.date 
FROM users u 
INNER JOIN user_details -- there is a trigger which makes a row in this table after insert in users table. 
ON u.id = ud.user_id 

今、私は特定のユーザーのために上VIEWを使用したい:

-- users 
+----+--------+---------------------+----------+--------------------+ 
| id | name |  email   | password |  cookie  | 
+----+--------+---------------------+----------+--------------------+ 
| 1 | Jack | [email protected] | 098u23r8 | kj3409t34034u8rf | 
| 2 | Peter | [email protected] | k0io34r4 | m32i0949y834rf34 | 
| 3 | Martin | [email protected] | fg345t34 | rf34r89p23r49i34 | 
+----+--------+---------------------+----------+--------------------+ 

-- user_details 
+---------+------+----------------------+----------------+ 
| user_id | age |   about  |  date  | 
+---------+------+----------------------+----------------+ 
| 1  | 32 | NULL     | NULL   | 
| 2  | NULL | A senior developer | 1992-02-10  | 
| 3  | 18 | NULL     | 1999-01-06  | 
+---------+------+----------------------+----------------+ 

は今、私はこのようなVIEWを作りたいです。私はこれを次のようにすることができます:

SELECT * FROM user WHERE id = :user_id 

しかし、私はそれがたくさんの無駄な処理だと思います。とにかく、毎晩のようなものをVIEWのロジックに追加するにはどうすればいいですか?

+1

最後のスニペットで行ったように、ビューを照会するだけです。どのような半減オプティマイザも適切に処理します。 – Mureinik

答えて

0

ビュー自体にはパラメータがありません。しかし、あなたはただ、他のselectのように、viewからデータを取得するために使用select文でフィルタリングすることができます:

select from `user` where id = :id 

ビュー内の動的フィルタリングを含めるための他の方法はありません。

0

ビューには入力パラメータを設定できないため、ビューを作成する必要があります。次に、必要な結果に応じて条件を使用してビューを選択クエリとして呼び出すことができます。例: -

select from `user` where id = 1; 
select from `user` where id in (1,2); 
関連する問題