Modérateur PHPfrance |
2575 Messages
26 mai 2009, 13:44
Il faut noter aussi que le fait de créer des tables temporaires basées sur des requêtes n'est pas une bonne idée si ce n'est pas nécessaire, car le contenu de la table ne sera pas dynamique, c'est à dire que les nombres calculés dans ton exemple ne changeront pas au fil du temps à la réutilisation de la table. La requête est utilisée pour créer la table et ne reste pas attachée à la table.
Par contre, si tu veux créer une "table dynamique" basée sur une requête et qui change de contenu à chaque ouverture dans le temps, il faut utiliser à ce moment là : UNE VUE. Comme ça:
Code : Tout sélectionner
CREATE VIEW vue_nombre_localite
AS
SELECT adresse.adr_localite, count(adresse.adr_localite) as nombreDeFois
FROM fiche,adresse
WHERE fiche.fi_adr_id = adresse.adr_id and fiche.fi_dateCreation > "2009-05-24"
GROUP BY adresse.adr_localite;
La vue est considérée par SQL comme une table sauf que le contenu d'une vue est dynamique et en lecture seule car elle est attachée toujours à une requête SELECT qui sera toujours exécutée quand la vue est ouverte.
Voici un exemple d'utilisation de la vue "vue_nombre_localite":
Dans cet exemple, SQL va ouvrir la vue "vue_nombre_localite" en exécutant son code SQL qui lui est attaché à la création. C'est à dire celui_là:
Code : Tout sélectionner
SELECT adresse.adr_localite, count(adresse.adr_localite) as nombreDeFois
FROM fiche,adresse
WHERE fiche.fi_adr_id = adresse.adr_id and fiche.fi_dateCreation > "2009-05-24"
GROUP BY adresse.adr_localite;
Et retournera toujours un résultat actualisé contrairement à la technique de création de table temporaire.
Dans ce cas, me dirais-tu, à quoi sert le CREATE TABLE basé sur SELECT? hé bien, il sert par exemple à éclater une table en plusieurs tables pour faire une répartition de données ou un archivage filtré. Comme par exemple, de créer des tables régionales pour répartir les ventes de produits par région. Cette technique est le contraire de la centralisation ou la consolidation de données.
--------
//////----
//---
//----
//////
-------
//---
//----
//---
//----
//---
//
------
//////----
//////-----
//////
-----
||--------
||--
||---
||
Prendre le recul n'est pas une perte de temps.
ps:
Affrontez moi dans l'arène