Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/11/2011, 19h49   #1
Invité de passage
 
Homme
Inscription : novembre 2011
Messages : 1
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : novembre 2011
Messages : 1
Points : 0
Points : 0
Par défaut Vue ou table ? avec Select

Je dois créer une table avec un sélect dans mysql. Exactement comme si c'était une vue. Mais je ne peut créer de vues matérialisées.
J'ai également des foreign keys qui devront pointer vers cette table que j'aimerais créer. Y a t-il un moyen de créer une table avec un sélect. Identique a la vue ci-dessous. Avec Mysql. Ou je pourrai faire pointer des foreign keys.
Merci à l'avance

Code :
1
2
3
4
CREATE VIEW Professeur (idEmploye, nom, prenom)
                 AS SELECT idEmploye, nom, prenom
                 FROM Employe E
                 WHERE E.professeur = 1;
simquest2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2011, 19h36   #2
Membre du Club
 
Inscription : août 2009
Messages : 66
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 66
Points : 69
Points : 69
Je ne suis pas sûr d'avoir bien compris ta demande. Personnellement, je testerais :

Code :
1
2
3
CREATE TABLE Professeurs AS SELECT idEmploye, nom, prenom
                 FROM Employe E
                 WHERE E.professeur = 1;
pour créer la table, puis :

Code :
1
2
3
 INSERT INTO Professeurs SELECT idEmploye, nom, prenom
                 FROM Employe E
                 WHERE E.professeur = 1;
pour insérer les enregistrements.

Mais attention, le CREATE TABLE va définir le type de ces colonnes en fonction du résultat de la requête. Il faudra probablement faire des modifications sur la table après coup.
NicoD. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/11/2011, 09h57   #3
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 328
Points : 18 328
Envoyer un message via MSN à CinePhil
Avec la méthode décrite par NicoD, Si tu ajoutes un prof dans la table Employe, ce ne sera pas automatiquement répercuté sur la table Professeur, sauf si tu crées un trigger AFTER INSERT sur la table Employe.

Si tu veux que ce soit toujours cohérent, tu peux faire ta vue puis quand tu en as besoin faire une table temporaire basée sur la vue puis l'indexer :
Code :
1
2
3
4
5
6
CREATE TEMPORARY TABLE prof
SELECT *
FROM Employe;
 
ALTER TABLE prof
ADD INDEX (nom, prenom);
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h37.


 
 
 
 
Partenaires

Hébergement Web