Voici ma structure de table:Comment créer une vue nécessitant un paramètre?
-- 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 |
+---------+------+----------------------+----------------+
Maintenant, je veux faire un VIEW
comme celui-ci:
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
Maintenant, je veux utiliser VIEW
ci-dessus pour un utilisateur spécifique. Je peux le faire comme ceci:
SELECT * FROM user WHERE id = :user_id
Mais je suppose que c'est beaucoup de traitement des déchets. Quoi qu'il en soit, comment puis-je ajouter quelque chose comme ce AND u.id = :user_id
à la logique de VIEW
à chaque fois?
Examinez la vue comme vous l'avez fait dans le dernier extrait. N'importe quel optimiseur de demi-descente le manipulerait correctement. – Mureinik