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

PL/SQL Oracle Discussion :

La meilleur façon de faire une recherche ?


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Par défaut La meilleur façon de faire une recherche ?
    Bonjour

    j'ai ces 2 Tables

    Table Personne


    --------------------
    id |PreNom | Nom
    ---------------------
    1 |Patric | abo
    2 |suzi | Binus
    3 |Roméo | Dadi
    ----------------------

    table voiture

    --------------------------------
    Pers_id | Marque | date |
    --------------------------------
    1 | peugeot | 1999 |
    1 | alpha | 2002 |
    2 | renault | 2004 |
    2 | alpha | 2006 |
    2 | peugeot | 2007 |
    3 | peugeot | 2008 |

    J'aimerai Créer une procédure stocké qui fait une recherche sur les trois champs suivants voiture.date , voiture.Marque , Personne.id et qui retourne le resultat suivant :

    id |PreNom | Nom | Marque | date |



    La procédure stockée Prendra la Forme suivantes:

    Procédure cherche_Personne(voiture_date IN Date,voiture.Marque IN VARCHAR2,Personne.id IN NUMBER , Tcur out Tcursor )

    Je dois utiliser la clause like || '%'
    pour retourner le bon résultat si on saisi juste un seul ou bien 2 Champs. et tout retourner si on ne saisie rien comme paramètre d'entré.



    Quelle est la meilleur Méthodes d'y Procéder ?

    Merci Bien

  2. #2
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Comment dire-je : essayer de programmer, non ?

  3. #3
    Membre éclairé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Par défaut
    Si t'as pas envis d'offrir de l'aide je te remerci de ne plus repondre du tout la Prochaine Fois.
    Cependant je cherche une piste moin classique que je le ferai, parceque la solution qui me saute aux yeux est de faire 9 Fois Case et qui est solution Plutot Classique et pas du tout propre à mon avis .

  4. #4
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 33
    Par défaut
    Citation Envoyé par Jcpan Voir le message
    Salut, a mon avis essayer de creer une vue avec les 5 parametre que tu veut retourné.
    aprés, essayer de faire un select sur la vue tel que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT id_per, nom_pers, nom_voiture, date, machin 
    FROM    VIEW
    WHERE  id_per = id_en_parametre
    AND      .....

  5. #5
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    Le plus simple et le plus court est de construire la requête dynamiquement..
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  6. #6
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Citation Envoyé par vicenzo Voir le message
    Le plus simple et le plus court est de construire la requête dynamiquement..
    Je ne pense pas que c'est le cas

  7. #7
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    quand je dis plus "simple" et plus "court" cela signifie en terme de code et non pas en termes de perf...
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2007
    Messages : 149
    Par défaut
    Citation Envoyé par vicenzo Voir le message
    Le plus simple et le plus court est de construire la requête dynamiquement..
    Je ferais ça aussi.

    Sinon j'ai pensé à une autre façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    SELECT ID,PRENOM,NOM,MARQUE,DATE
        FROM PERSONNE P, VOITURE V
        WHERE 
            P.ID=V.PERS_ID
            AND (
                    V.DATE IS NULL
                    OR
                    V.DATE = la_date
                )
            AND (
                    V.MARQUE IS NULL
                    OR
                    V.MARQUE LIKE '%'||la_marque||'%'
                )
            AND (
                    P.ID IS NULL
                    OR
                    P.ID LIKE '%'||id||'%'
                )
    Quelque chose comme ça fonctionnerait-il ? (je parle pas de perf ^^)

  9. #9
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    1 - les "or" plombent les perfs
    2 - les "is null" rendent caduque l'utilisation d'éventuel index...
    3 - associer les deux : pas cool....
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  10. #10
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Citation Envoyé par Jcpan Voir le message
    Si t'as pas envis d'offrir de l'aide je te remerci de ne plus repondre du tout la Prochaine Fois.
    Cependant je cherche une piste moin classique que je le ferai, parceque la solution qui me saute aux yeux est de faire 9 Fois Case et qui est solution Plutot Classique et pas du tout propre à mon avis .
    Si, si mais relie ton premier poste STP. Où trouve tu l'histoire de "9 fois Case" ? Ajoute ce que t'essayé (le code de ta procédure) et tu aura des retours beaucoup plus intéressantes et utiles.

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/10/2009, 17h26
  2. Itération/recherche, meilleure façon de faire?
    Par Sallie dans le forum Langage
    Réponses: 34
    Dernier message: 16/01/2008, 10h00
  3. Réponses: 1
    Dernier message: 08/08/2007, 08h45
  4. cherche une fonction qui permet de faire une recherche
    Par vbcasimir dans le forum Langage
    Réponses: 7
    Dernier message: 01/09/2005, 17h24
  5. Est ce bien la meilleure façon de faire un histogramme ?
    Par rvzip64 dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 10/05/2005, 12h41

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