Précédent   Forum des professionnels en informatique > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels 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 20/11/2010, 23h01   #1
Membre habitué
 
Inscription : janvier 2003
Messages : 316
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : janvier 2003
Messages : 316
Points : 104
Points : 104
Par défaut Recuperer les donnees de plusieurs tables avec memes colonnes

Bonjour,

J'ai plusieurs tables avec exactement les memes colonnes (je n'ai pas regroupe les tables en une seule, car j'ai besoin d'avoir des tables separees).

En gros cela donne ceci :
Code :
1
2
3
4
5
6
7
 
MyGroup -> AllClinic (contient le nom des TABLES de Clinic1 a ClinicX)
         -> Clinic1
         -> Clinic2
         -> Clinic3
         -> .../...
         -> ClinicX
MyGroup est ma database, et Clinic1 a ClinicX sont les tables.
J'ai besoin d'avoir les tables separees pour chaque Clinic.
Le nom des tables est un ID qui est stocke dans la table AllClinic.


Donc ma question:
Comme j'ai besoin de recuperer certaines donnees de toutes les tables en sachant que les noms des colonnes sont les memes, mais avec des donnees differentes.

Pour recuperer les donnees, j'ai fait d'abord une requete a partir de ma table "AllClinic" pour recuperer tous les ID des tables, et ensuite j'ai faif une boucle pour recuperer les donnees pour chaque table .
Mais si j'ai une centaine de tables, ma boucle va faire une centaine de requete, et je pense que ce n'est pas tres bon. non ?

Donc je voudrais recuperer les donnees de toutes les tables en une seule requete.
Comment puis-je proceder en sachant que les noms des colonnes sont identiques mais qu'il n'y a aucune correspondance d'une table a l'autre ?

Merci
Fred
FredericB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 00h10   #2
Membre Expert
 
Avatar de becket
 
Frédéric Brugmans
Informaticien multitâche
Inscription : février 2005
Messages : 661
Détails du profil
Informations personnelles :
Nom : Frédéric Brugmans

Informations professionnelles :
Activité : Informaticien multitâche

Informations forums :
Inscription : février 2005
Messages : 661
Points : 1 196
Points : 1 196
Pourquoi ne pas avoir fait une seule table avec un id sur le numero de la clinique et des vues ?
becket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 00h38   #3
Membre habitué
 
Inscription : janvier 2003
Messages : 316
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : janvier 2003
Messages : 316
Points : 104
Points : 104
Il faut absolument des tables separees, il faut que se soit tres bride (question de confidentialite)
FredericB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 01h14   #4
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
dans ce cas là, je donne raison à Becket, une seule table pour l'écriture et des vues avec une gestion des droits fines pour la lecture. (les vues en écriture je trouve que ça ne marche pas super). tu auras exactement la même sécurité point de vue sgbd. Sauf si tu autorises ton client à faire des DELETE sans where et des DROP table... mais là ...

Mission accomplie?

sinon pour ton truc, il faut aller vers une procédure, et moi je ne sais pas faire les procédures sous mysql (tant que les hébergements mutualisés ne gèreront pas ça... ).

EDIT: l'idée des vues n'est pas si mauvaise que ça. Si l'option plein de tables te semble meilleure tu peux toujours créer une vue qui "concatène" les tables.
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 02h53   #5
Membre habitué
 
Inscription : janvier 2003
Messages : 316
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : janvier 2003
Messages : 316
Points : 104
Points : 104
Je suis oblige de rester avec plein de tables (securite), car il va y avoir + de 200-300 cliniques. Si je fais une seule table, et que j'ai un probleme avec cette table, toutes les cliniques auront des problemes, et on va me faire la peau.

Je vais approfondir l'idee des vues.

Merci
Fred
FredericB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2010, 18h20   #6
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 820
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 820
Points : 6 443
Points : 6 443
Tu peux également ne générer qu'une seule requête sur l'ensemble des tables, en interrogeant chaque table et en joignant toutes les interrogations par l'opérateur UNION.
Tu peux trouver un exemple dans la : http://mysql.developpez.com/faq/?pag..._table_origine
Cet exemple te montre même comment ajouter un champ dans la requête qui identifie de quelle table provient l'enregistrement, si besoin.

Le problème avec les vues, c'est qu'il faut que tu saches à l'avance dans quelles tables faire les requêtes, ce qui ne semble pas être le cas d'après ce que j'ai compris.

ced
__________________
Rédacteur / Modérateur SGBD
Mes tutoriels et la FAQ MySQL

----------------------------------------------------
Pensez aux balises code et au tag
Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
ced est actuellement 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 20h03.


 
 
 
 
Partenaires

Hébergement Web