Poster une réponse 
 
Note de cette discussion :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[SQL] Nom de table dynamique?
Auteur Message
Argorate Hors ligne
Membre

Messages : 330
Inscription : Aug 2006
Réputation : 1
Message : #1
[SQL] Nom de table dynamique?
Bonsoir,

Voilà mes petits soucis: j'ai un problème d'optimisation.
Je connais la solution a mon problème, mais elle ne me plait guère, donc j'en cherche une plus optimisé; pour du SQL dans php.

J'ai une table :

table1(id,type)
Ainsi que
toto_1(id, ...)
toto_2(id,...)
toto_3(id,...)
...
Il me faut donc jointer sur l'id.
Seulement le nom de cette table est toto_X où X est un numéro qui correspond au type.

Autrement dit ma solution actuel serait de faire une requête où je récupère le type en premier et où je place ça dans la variable $type admettons, puis une deuxième requête où je ferais un truc du style:

SELECT * FROM table1, toto_$type WHERE table1.id = toto_$type.id

Pour ceux qui ont suivit, le problème est donc que je me vois obligé de faire deux requêtes, hors lorsque je n'avais pas différent type, je n'avais qu'une seule table fixe (toto), donc qu'une seule requête avec une simple jointure.
J'aimerais donc savoir s’il y a moyen de feinter pour tous faire en une requête ou pas...

Merci.

Argo.

Projet en cour: 55% de codé. (création des ressources sur la map/inventaire en cour).
(Ce message a été modifié le : 10-25-2008 08:38 PM par Sephi-Chan.)
10-24-2008 07:23 PM
Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
Sephi-Chan Hors ligne
Administrateur
*******

Messages : 4,492
Inscription : Aug 2006
Message : #2
RE: [SQL]Nom de table dynamique?
Bonsoir,

Peut-être s'agit-il là d'un problème de modélisation ? Peux-tu nous expliquer le contexte d'utilisation ?
À priori, si l'identifiant qui suffixe représente un type, ne peut-il pas être représenté par une colonne dans une table unique ?

Sinon, n'est-il pas possible de récupérer le type dans une variable SQL et l'utiliser comme tu le fais actuellement avec ta variable PHP.


Sephi-Chan

www.sephi-chan.fr
10-24-2008 07:53 PM
Visiter le site internet de cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
Argorate Hors ligne
Membre

Messages : 330
Inscription : Aug 2006
Réputation : 1
Message : #3
RE: [SQL]Nom de table dynamique?
"l'identifiant qui suffixe représente un type"
Non... j'ai peut etre mal formulé car en realité il n'y a pas que c'est deux champs dans table1, mais j'ai simplifié.

l'id represente l'id d'un jeu php par exemple, et le type est un chiffre (0: medieval, 1: futuriste etc), il n'on pas de lien direct.

Comment tu recuperes le type dans une variable SQL qui jouerait dans le FROM?

Argo.

Projet en cour: 55% de codé. (création des ressources sur la map/inventaire en cour).
(Ce message a été modifié le : 10-24-2008 08:52 PM par Argorate.)
10-24-2008 08:51 PM
Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
Sephi-Chan Hors ligne
Administrateur
*******

Messages : 4,492
Inscription : Aug 2006
Message : #4
RE: [SQL]Nom de table dynamique?
Je te redirige vers la documentation de MySQL qui sera plus efficace que moi pour répondre à ta question. 2
MySQL - Variables utilisateur


Sephi-Chan

www.sephi-chan.fr
10-24-2008 09:53 PM
Visiter le site internet de cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
Nambew Hors ligne
Membre

Messages : 61
Inscription : May 2007
Réputation : 0
Message : #5
RE: [SQL]Nom de table dynamique?
Pourquoi ne pas donner les champs que contient tes tables, vu que comme Sephi, je crois qu'il s'agit de erreur de modélisation vu que je ne vois pas l'intérêt de faire des tables dynamiques en SQL.
10-24-2008 10:33 PM
Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
Argorate Hors ligne
Membre

Messages : 330
Inscription : Aug 2006
Réputation : 1
Message : #6
RE: [SQL]Nom de table dynamique?
c'est plutot simple pourtant, j'ai une table qui est la map pour mes objets de mon jeu, je met donc le x,y,id,type

puis pour allez chercher les info relative a l'objet il me faut d'une part allez prendre les champs commun dans une table, et la jointer aux champs spécifique du type d'objet (comme un heritage de classe mais en BDD)...

Si vous avez une meillieur conception, dites moi le 1

Argo.

Projet en cour: 55% de codé. (création des ressources sur la map/inventaire en cour).
(Ce message a été modifié le : 10-24-2008 10:49 PM par Argorate.)
10-24-2008 10:48 PM
Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
Nambew Hors ligne
Membre

Messages : 61
Inscription : May 2007
Réputation : 0
Message : #7
RE: [SQL]Nom de table dynamique?
Si c'est de l'héritage que tu cherches à faire, j'ai trouvé cette article sur developpez.com. Par contre, je ne crois pas que ça va régler ton problème puisque tu sembles vouloir récupérer les données de l'enfant à partir du parent.

http://sqlpro.developpez.com/cours/model.../heritage/

Si je représente ton problème en programmation dans un environnement typé. Personne ( nom ) et Client qui hérite de Personne. Le trace va me retourner une erreur comme quoi la propriété noClient n'existe pas dans la classe Personne, pourtant c'est bien un client. C'est exactement ce que t'essaie de faire, c'est logique de ne pas pouvoir récupérer les informations de la classe enfant à partir de la classe parent si on ignore le type de l'enfant. Même PostgreSQL qui supporte l'héritage n'est pas en mesure de faire ce genre de jointure implicitement.

Code PHP :
var client:Client = new Client();

client.nom "toto";
client.noClient "001";

var 
personne:Personne client;

tracepersonne.noClient ); 
10-25-2008 06:03 AM
Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
Argorate Hors ligne
Membre

Messages : 330
Inscription : Aug 2006
Réputation : 1
Message : #8
RE: [SQL]Nom de table dynamique?
je ne veux pas de code, juste du SQL en faite.

Le type on le connais, c'est juste qu'en fonction de celui-ci le FROM doit varier. Es-ce possible donc, ou dois-je le faire en plusieurs fois?

En resumer, soit j'ai deux requetes d'une ligne, mais le il y a une conection a la bdd pour els deux requetes et sa cout en temps d'execution, soit on trouv le moyen de le faire en une requete..

Argo.

Projet en cour: 55% de codé. (création des ressources sur la map/inventaire en cour).
(Ce message a été modifié le : 10-25-2008 05:22 PM par Argorate.)
10-25-2008 05:17 PM
Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
Nambew Hors ligne
Membre

Messages : 61
Inscription : May 2007
Réputation : 0
Message : #9
RE: [SQL]Nom de table dynamique?
Le type est inconnu, si tu connaitrais le type que tu veux récupérer tu pourrais récupérer les informations de la table enfant et faire une jointure sur la table parent. Je ne crois pas que tu puisses tant sortir en bas de 2 requêtes SQL.
10-25-2008 06:48 PM
Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
pascal Hors ligne
Membre

Messages : 676
Inscription : Aug 2006
Réputation : 14
Message : #10
RE: [SQL]Nom de table dynamique?
et via une procédure stockée ?
ça permettrait de se connecter une fois, traiter toute la logique en SQL et renvoyer le résultat.

A+

Pascal

Bonnes pratiques SQL - Passer à la POO
présentation
10-25-2008 07:40 PM
Visiter le site internet de cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
Poster une réponse 



ContactJeuWeb (JeuPHP) - Crée ton jeu par navigateurRetourner en hautRetourner au contenuVersion bas-débit (Archivé)Syndication RSS