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

Langage SQL Discussion :

Requête sql dynamique


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Requête sql dynamique
    Bonjour à tous et merci d'avance de me lire.

    ce programme en php/mysql pour notre service Urbanisme et gère des fiches (table fiche) de différents types (Permis de construire, permis de démolir etc...)

    un permis de construire a des infos générales dans la table fiche (Nom Prénom etc...) et des informations propres dans la table _PC (types de travaux ...)

    un permis de démolir a des infos générales dans la table fiche (Nom Prénom etc...) et des informations propres dans la table _PD (Motif démolition ... ).

    Je vous présente donc ma table :

    Table Fiche
    IdFiche
    CodeFiche
    NomCltFiche
    ...

    Table propre à chaque type :

    Permis XX ou certificat XX

    IdXX
    IdFiche (lien avec IdFiche de la table fiche)
    TypeTravauxXX
    ParcelleXX

    Vous l'avez compris, je souhaiterais faire une requête qui me remonte la liste de toutes les fiches où Fiche.IdFiche = PermisX.IdFiche

    Seulement comme vous l'imaginez quand je fais SELECT * FROM Fiche WHERE (Fiche.IdFiche = PermisX.IdFiche OR Fiche.IdFiche = PermisY.IdFiche OR Fiche.IdFiche = PermisZ.IdFiche) cela ne me remonte rien...

    quelqu'un(e) a t'il une idée s'il vous plaît ?

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 244
    Points : 12 876
    Points
    12 876
    Par défaut
    Bonjour,
    Est-ce que tu veux remonter les fiches qui correspondent à un numéro de permis, quelque soit le permis en question ?
    Si c'est bien le cas:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    select fiche.*
    from fiche
    left outer join PermisX on Fiche.IdFiche = PermisX.IdFiche 
    left outer join PermisY on Fiche.IdFiche = PermisY.IdFiche 
    left outer join PermisZ on Fiche.IdFiche = PermisZ.IdFiche 
    where PermisX.IdX = <LeNumero> or PermisY.IdY = <LeNumero> or PermisZ.IdZ = <LeNumero>

    Tatayo.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Merci,

    je teste ça et je viens te redire ce que ça donne

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Bon,

    je viens de tester, le soucis c'est que cela me retourne avec ta requête que les infos contenus dans la table fiche.

    J'ai donc tenté un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT fiche . * , _cu . * , _pd . * , _pcmi . * 
    FROM fiche
    LEFT OUTER JOIN _cu ON Fiche.IdFiche = _cu.IdFiche
    LEFT OUTER JOIN _pd ON Fiche.IdFiche = _cu.IdFiche
    LEFT OUTER JOIN _pcmi ON Fiche.IdFiche = _pcmi.IdFiche
    mais forcément le soucis c'est que j'ai tous les champs, peut importe si il y a jointure ou non...

    Par exemple :
    fiche1|DUPONT|Bernard|1, rue de Paris|NULL|NULL|NULL|NULL|263 mètres|agrandissement
    fiche1|DUCHMOL|Gérard|2, rue de Marseille|TypeA|BX412336|PARIS|2|NULL NULL|NULL

    j'aurais bien aimé qu'il me rajoute uniquement les champs issus de la relation Fiche.IdFiche = _cu.IdFiche ou Fiche.IdFiche = _pd.IdFiche mais pas tous...

    Je ne sais pas si c'est possible du coup...

    EDIT : Après réflexion je m'aperçoit que j'ai les enregistrements donc je vais faire la suite en PHP avec une sélection des champs dynamiques... si $tab['TypeFiche'] = 1 alors $table = "_cu" et refaire une requete simple derrière pour afficher la suite, je vais moins m'embêter

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 244
    Points : 12 876
    Points
    12 876
    Par défaut
    Tu peux aussi faire une union de 3 requêtes, si les 3 renvoient le même nombre de colonnes et que celle-ci sont de même type (chaine, entier...).

    Tatayo.

Discussions similaires

  1. Requête SQL dynamique avec nom de table dans une variable
    Par jonjack dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 15/09/2011, 14h37
  2. [XL-2002] Requète SQL dynamique en Excel VBA.
    Par cotmar dans le forum Excel
    Réponses: 2
    Dernier message: 23/12/2009, 19h11
  3. Jasper /.Net /Requête SQL dynamique
    Par dedein84 dans le forum Jasper
    Réponses: 7
    Dernier message: 26/09/2008, 17h12
  4. Transformer une requête sql dynamique
    Par ttttnht dans le forum Sybase
    Réponses: 5
    Dernier message: 24/07/2007, 07h54
  5. Réponses: 3
    Dernier message: 04/06/2007, 12h29

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