IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Procédural MySQL Discussion :

Select sur plusieurs tables dynamiques


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 21
    Par défaut Select sur plusieurs tables dynamiques
    Bonjour,
    J'ai cherché toute la journée sans résultat.
    Je cherche à faire un select sur 2 tables (jusqu'à là rien de dramatique) mais où la deuxième n'est pas statique.

    J'ai testé de faire une requête comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM tableA, CASE WHEN tableA.code = 'CODEA' THEN tableB ...
    Mais j'ai fini par déduire que l'on ne peut pas utiliser des procédures ou de CASE dans FROM.

    Donc je ne vois plus comment faire, à par passer par un programme.
    Avez-vous une idée ?
    Merci.

  2. #2
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    non tu peux pas:
    un truc simple:
    procédure stockée, tu sépares tes 2 requêtes si tu peux
    ton case en tant qu'instruction
    et tes différentes versions de requêtes après chaque then

    mais bon, comme ton exemple est pas très clair sur les liens entre les 2 tables... dur d'en dire plus

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 21
    Par défaut
    En fait j'ai une table pour les objets (avec les infos sur l'objet : son type, id, lieu ...) et plusieurs tables pour les différents types d'objet avec les infos de base (chaque type "A" a 10 caractéristique, chaque type B en a 5 ...).

    Et je voudrais pouvoir lancer une requête qui me retourne les infos de chaque objet et de son type.

    Le type et représenté par 2 lettres et un numéro.

    Pour le moment je fais plusieurs requêtes, une pour avoir la liste des objets et une par objet pour avoir les infos de base.

    Ça démultiplie les requêtes et ça m'embête parce qu'il y a pas mal d'objet retourné, beaucoup d'utilisateur et beaucoup d'utilisation de cette requête.


    Je ne vois pas trop comment faire des requêtes dans une procédure stockée et de retourner les données. J'ai tenté de me débrouiller avec les procédures stockées avant de poster, mais je n'ai pas réussi a faire ce que je voulais.

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 : 16 818
    Billets dans le blog
    14
    Par défaut
    Pourquoi ne pas faire des vues qui réuniraient les caractéristiques de base de l'objet et celles de son type.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE VIEW AS
    SELECT o.id, o.lieu, a.carac1, a.carac2 -- ...
    FROM objet o
    INNER JOIN objet_type_A a ON a.id_objet = o.id
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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 la suite Linux Mageïa !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 21
    Par défaut
    ça revient au même non ?
    Disons que j'ai deux objets un de type "A" et l'autre de type "B".
    Ta vues ne m'avance pas plus que un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM objet o, type_A
    WHERE ...
    A moins que je n'ai pas compris quelque chose.


    Mon grand problème c'est que je ne sais pas par avance dans quelle table chercher (j'en ai 5 pour les types).

    Voilà un exemple du cheminement (simplifié) que j'utilise pour le moment.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT type_base FROM objet WHERE id = un nombre
    -> RC5

    où RC = table construction
    et 5 = id dans cette table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM construction WHERE id = 5
    Et là si j'élargis la recherche sur un "lieu", j'ai entre 10 et 100 objets voir plus et donc autant de requête.

  6. #6
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    Avez vous pensé a utiliser du SQL Dynamique ?

  7. #7
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    chaque objet a des caractéristiques différentes, pourquoi ne pas faire 3 tables:

    une table objet, une table listant les caractéristiques possibles, et une table de liaison liant les caractéristiques et leur valeurs aux objets?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. select sur plusieurs tables
    Par julien.63 dans le forum Requêtes
    Réponses: 6
    Dernier message: 16/05/2006, 17h29
  2. [SQL Access] SELECT sur plusieurs Tables et Composer Champs
    Par Giuseppe dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 07/11/2005, 14h00
  3. SELECT sur plusieurs Tables et Composer Champs
    Par Giuseppe dans le forum Langage SQL
    Réponses: 4
    Dernier message: 07/11/2005, 12h27
  4. un seul SELECT sur plusieurs tables ?
    Par deloo dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/09/2005, 12h57
  5. select sur plusieurs table, question sur jointure
    Par Schulman dans le forum Langage SQL
    Réponses: 7
    Dernier message: 03/09/2004, 13h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo