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 :

Selection suivant condition


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 88
    Points : 48
    Points
    48
    Par défaut Selection suivant condition
    Bonjour,

    Je n'arrive pas à faire un SELECT.

    Voici le problème.

    J'ai une table de factures qui peuvent être soit payer soit non payer : facture.payer = 'oui' ou facture.payer = 'non' (champ de type varchar).

    J'aimerais faire un SELECT sur ma table des factures suivant l'option 'Type' qui peut prendre les valeurs suivantes : 'Tout', 'Oui' ou 'Non'.

    Si on choisit l'option 'Oui' seules les factures payées seront sélectionnées, si on choisit 'Non' seules les factures impayées seront sélectionnées et si on choisit 'Tout' toutes les factures (payées et impayées) seront sélectionnées.

    Biensûr, je pourrais faire 3 SELECT distinct suivant un CASE (ou IF) mais je voudrais faire cela avec 1 seul SELECT (dans la clause WHERE par exemple). En effet c'est pour utiliser avec un programme spécial qui n'autorise qu'1 SELECT.

    Merci à vous tous qui pourrez m'aider (et aux autres aussi).

    Bonne et heureuse année 2008 !

    Alf

  2. #2
    Membre à l'essai
    Inscrit en
    Juillet 2003
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    bonjour bong03,
    puisque tu cherches a n avoir q une seule requête select ,tu peux agir sur ta variable type et ce en manipulant les requetes dynamiques ainsi :tu auras une seule requete select avec la clause where qui elle ,depend de la variable type tel que : pour chaque type ,tu aura une condition qui tu vas pouvoir interger dans la clause where de ta requete. si mon idee t intersse ,je pourrais te dire comment faire ... et c simple

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 879
    Points : 53 057
    Points
    53 057
    Billets dans le blog
    6
    Par défaut
    Exemple en SQL Server :
    Soit la variable @TYPFAC de type BIT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT ...
    FROM   MaTable
    WHERE  PAYER = COALESCE(@TYPFAC, PAYER);
    A +

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 88
    Points : 48
    Points
    48
    Par défaut
    Merci SQLPro pour ta réponse. Je ne connaissais pas cette fonction. Cepandant elle ne fait pas ce que j'attends : à savoir que si @Type = 'tout', la requete ne renvoi rien alors qu'elle doit tout renvoyer. Si @Type = 'Oui' (respectivement 'Non') le résultat attendu est OK.

    zineb : Peux-tu m'en dire plus sur ta solution : des exemples...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    Il faut tout simplement que tu mette ta variable PHP dans ta requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete = "SELECT * FROM Facture where Type='$type'";

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 879
    Points : 53 057
    Points
    53 057
    Billets dans le blog
    6
    Par défaut
    Si dans la variable vous ne mettez rien (NULL) alors vous aurez tout !

    A +

  7. #7
    Membre régulier

    Profil pro
    Enseignant
    Inscrit en
    Novembre 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 32
    Points : 99
    Points
    99
    Par défaut
    Je ne pense pas que ça marche: si la variable contient null il n'aura rien.
    car la requete sera de la forme:

    select * from .. where type = ''

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 88
    Points : 48
    Points
    48
    Par défaut
    OK, Super merci SQLPro ! En combinant tes 2 messages ça marche.

    Reste à l'appliquer...

    Merci à tous pour votre participation.


    Alf

  9. #9
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 879
    Points : 53 057
    Points
    53 057
    Billets dans le blog
    6
    Par défaut
    Je ne pense pas que ça marche:
    dotzero, ne pensez pas... Agissez : testez !

    A +

Discussions similaires

  1. select suivant une condition?
    Par cortex024 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 28/06/2007, 19h03
  2. Réponses: 2
    Dernier message: 08/06/2006, 06h29
  3. SELECT et conditions
    Par metalcoyote dans le forum Oracle
    Réponses: 6
    Dernier message: 20/04/2006, 15h38
  4. [HyperFile] requete de selection avec condition de comptage
    Par pierre.zelb dans le forum HyperFileSQL
    Réponses: 1
    Dernier message: 16/02/2006, 10h20
  5. Réponses: 6
    Dernier message: 08/06/2004, 14h51

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