Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes 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 15/03/2011, 12h38   #1
Invité de passage
 
Homme
Étudiant
Inscription : mars 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2011
Messages : 3
Points : 0
Points : 0
Par défaut Problème de création de table

Bonjour tout le monde, je suis très heureux de voir qu'il ya des personnes qui prennent du temps à expliquer et aider les personnes, je leur dis chapeau.

Voilà, je suis entrain de concevoir un projet de base de donnée et j'ai la table `import` suivante qui me pose problème ayant comme schéma relationnel suivant:


Nom_Pays Code_Espece_Commodité Qualité Annee1976 Annee1977 etc..

Exemple de ligne : France 1 Import_Quantity 0 0

Autre exemple de ligne: France 1 Import_Value 55 97

Autre exemple: France 26 Import_Value 65 87


J'aimerai arriver à créer une table à partir de cet table `import`, une autre table ayant comme schéma relationnel suivant:

Nom_Pays Code_Espece_Commodité Année Import_Quantity Import_Value


Exemple: France 1 1976 0 55

Autre Exemple: France 1 1977 0 97



Je ne trouve pas les requetes nécessaires afin de faire cette transition.


Merci beaucoup de m'aider et bon courage à tous pour vos autres problèmes
Rajive91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 15h00   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 998
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 : 10 998
Points : 18 262
Points : 18 262
Envoyer un message via MSN à CinePhil
Tu devrais aussi avoir :
- une table Pays (pay_id, pay_nom)
- une table Espece (esp_id, esp_code, esp_libelle)

Ainsi, ta table issue de la table d'importation aurait par exemple la structure suivante :
ta_table (pay_id, esp_id, annee, quantite_import, valeur_import)

Maintenant, remplissons les tables...
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
-- Alimentation de la table des pays
INSERT INTO Pays (pay_nom)
SELECT DISTINCT Nom_Pays
FROM Import
ORDER BY Nom_Pays;
 
-- Alimentation de la table des espèces
INSERT INTO Espece (esp_code)
SELECT DISTINCT Code_Espece_Commodité
FROM Import
ORDER BY Code_Espece_Commodité;
 
/* 
* Alimentation de la table principale des données
* Les requêtes ci-dessous sont à reproduire pour chaque année de la table d'import
* en changeant la valeur de l'année et le nom de la colonne portant l'année
*/
-- On insère d'abord les quantités
INSERT INTO ta_table (pay_id, esp_id, annee, quantite_import)
SELECT p.pay_id, e.esp_id, 1976, i.Annee1976
FROM Import i
INNER JOIN Pays p ON p.pay_nom = i.Nom_Pays
INNER JOIN Espece e ON e.esp_code = i.Code_Espece_Commodité
WHERE i.Qualité = 'Import_Quantity'
ORDER BY p.pay_id, e.esp_id;
 
-- On met à jour les valeurs pour les données déjà insérées
UPDATE ta_table t
INNER JOIN 
(
    SELECT p.pay_id, e.esp_id, i.Annee1976
    FROM Import i
    INNER JOIN Pays p ON p.pay_nom = i.Nom_Pays
    INNER JOIN Espece e ON e.esp_code = i.Code_Espece_Commodité
    WHERE i.Qualité = 'Import_Value'
) tmp 
    ON tmp.pay_id = t.pay_id
    AND tmp.esp_id = t.esp_id
SET t.valeur_import = tmp.Annee1976
WHERE t.annee = 1976
Les deux dernières requêtes, et surtout la dernière, sont à tester sur un petit jeu de données d'abord.

Ceci dit, si tu es maître de l'import, change le pour faciliter l'alimentation de la BDD structurée !
__________________
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
Vieux 15/03/2011, 15h39   #3
Invité de passage
 
Homme
Étudiant
Inscription : mars 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2011
Messages : 3
Points : 0
Points : 0
Par défaut Merciiii beaucoup!!

Je vous remercie beaucoup de votre attention à mon égard et des détails de vos explications!! J'ai en effet crée une table espèce ainsi qu'une table pays mais c'était surtout au niveau des années et des quantitités par année, le fait de transformer une ligne en colonne.

Je vais faire ce que vous m'avez conseillé de faire, malheureusement même le fichier 'import', j'ai du mal à le modifier, c'est un fichier csv.


Mercii beaucoup beaucoup de votre aide et générosité
Rajive91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 16h34   #4
Invité de passage
 
Homme
Étudiant
Inscription : mars 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2011
Messages : 3
Points : 0
Points : 0
Par défaut Ree

Cela marche parfaitement, mercii encore pour ton efficacité!
Rajive91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h22.


 
 
 
 
Partenaires

Hébergement Web