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 :

sous requete SQL


Sujet :

Langage SQL

  1. #1
    Invité
    Invité(e)
    Par défaut sous requete SQL
    bonjour,

    voila j'ai un petit soucis: j'ai une requete qui me récupère des infos en fonction de cases a cocher dont voici un extrait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT CHANTIER.chantier, CHANTIER.MaitreOuvrage, CHANTIER.MaitreOeuvre, CHANTIER.TTC, CHANTIER.Annees
    FROM CHANTIER, PARAMETRE
    WHERE (((CHANTIER.Routes)=[PARAMETRE].[Routes]) AND ((PARAMETRE.Routes)=-1)) OR (((CHANTIER.Villes)=[PARAMETRE].[Villes]) AND ((PARAMETRE.Villes)=-1)) OR (((CHANTIER.Industrie)=[PARAMETRE].[Industrie]) AND ((PARAMETRE.Industrie)=-1)) OR (((CHANTIER.Promoteur)=[PARAMETRE].[Promoteur]) AND ((PARAMETRE.Promoteur)=-1)) OR (((CHANTIER.Habitats)=[PARAMETRE].[Habitats]) AND ((PARAMETRE.Habitats)=-1)) OR (((CHANTIER.Plantation)=[PARAMETRE].[Plantation]) AND ((PARAMETRE.Plantation)=-1)) OR (((CHANTIER.PlantationBerge)=[PARAMETRE].[PlantationBerge]) AND ((PARAMETRE.PlantationBerge)=-1))
    admettons que parmis ces infos j'ai des chantiers qui date de moins de 3 ans et d'autre de plus de 3 ans. J'ai une case qui est cochée en fonction de ça. Il faudrait que je n'ai les que les chantiers qui ont moins de 3 ans. Je suppose qu'il y a une sous requete avec cette partie là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((CHANTIER.inf3)=[PARAMETRE].[inf3]) AND ((PARAMETRE.inf3)=-1)) OR (((CHANTIER.inf5)=[PARAMETRE].[inf5]) AND ((PARAMETRE.inf5)=-1));
    avec inf3 pour inferieur a 3 ans et inf 5 pour inférieur a 5 ans. Le problème c'est que je ne sais pas comment m'y prendre. Merci de me répondre

  2. #2
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    Bonjour,
    Tu utilises quoi comme langage de programmation ? Car il me semble que se soit plus un souci de ce côté la qu'un souci SQL

  3. #3
    Invité
    Invité(e)
    Par défaut
    ça c'est la requête sql qui est générée dans access...(plein le dos d'access )

  4. #4
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    Ah tu fais une application sous access c'est ça ? donc tu code en VB derrière non ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    oui c'est bien ça, sauf que pour le moment j'ai pas besoin de masse de code. J'ai vu un pro access l'autre jour qui ma dit que c'était possible de modifier ma requete sans toucher au code...

  6. #6
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    Normalement un chantier ne peut pas inférieur à 3 ans et inférieur à 5 ans en même temps, on est d'accord ?
    Donc si tu rajoutes ta condition pour inf à la fin de ta requête, ça marche pas ?

  7. #7
    Invité
    Invité(e)
    Par défaut
    le truc c ke G une colonne inf 3 et une colonne inf 5. La requete va chercher si ya une croix dans mon formulaire a inf3 ou a inf 5 et en fonction de ça elle va chercher dans la bonne colonne dans ma table...

  8. #8
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    Ok, mais elles ont quoi comme valeur tes variables de tes croix dans ton formulaire ?

  9. #9
    Invité
    Invité(e)
    Par défaut
    au pire je peux te filer ma base ça sera plus simple

  10. #10
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    si elle est pas trop grosse oui

  11. #11
    Invité
    Invité(e)
    Par défaut
    merci bien, la base est partie

  12. #12
    Invité
    Invité(e)
    Par défaut
    j'effectue mes tests sur le formulaire 21 - références entretien

  13. #13
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    Arf, je viens de me souvenir qu'à mon taf le FTP est bloqué du coup je ne peux pas dll les fichiers joints dans mes e-mails. Et vu que je n'ai pas le net chez moi, je pourrai le faire non plus. Désolé mais je vais pouvoir regarder. Néanmoins je vais continuer à regarder ton souci. je pense que tu va etre obligé de modifier ton code VB pour prendre le cas ou c'est la case inférieur à 3 qui est coché ou celle inférieur à 5. Car il ne me semble pas que SQL puisse gèrer ça

  14. #14
    Invité
    Invité(e)
    Par défaut
    merci quand même je vais me pencher sur le problème

  15. #15
    Membre confirmé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Points : 546
    Points
    546
    Par défaut
    Salut,

    Ta requête est vraiment dégueu (Access est énervant pour ça). Cela dit, je l'ai reprise proprement et je pense que ca serait bien d'essayer ca :

    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
    SELECT CHANTIER.chantier, CHANTIER.MaitreOuvrage, CHANTIER.MaitreOeuvre, CHANTIER.TTC, CHANTIER.Annees
    FROM CHANTIER, PARAMETRE
    WHERE (
    (CHANTIER.Routes=PARAMETRE.Routes AND PARAMETRE.Routes=-1) 
    OR (CHANTIER.Villes=PARAMETRE.Villes AND PARAMETRE.Villes=-1) 
    OR (CHANTIER.Industrie=PARAMETRE.Industrie AND PARAMETRE.Industrie=-1) 
    OR (CHANTIER.Promoteur=PARAMETRE.Promoteur AND PARAMETRE.Promoteur=-1) 
    OR (CHANTIER.Habitats=PARAMETRE.Habitats AND PARAMETRE.Habitats=-1) 
    OR (CHANTIER.Plantation=PARAMETRE.Plantation AND PARAMETRE.Plantation=-1) 
    OR (CHANTIER.PlantationBerge=PARAMETRE.PlantationBerge AND PARAMETRE.PlantationBerge=-1)
    )
    AND (
    CHANTIER.inf3=PARAMETRE.inf3 AND PARAMETRE.inf3=-1) 
    OR (CHANTIER.inf5=PARAMETRE.inf5 AND PARAMETRE.inf5=-1)
    )
    Les -1, ils viennent de ta programmation ou pas ?

  16. #16
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut case à cocher
    Il me semble bien que les cases à cocher renvoient la valeur -1 si non cochées et la valeur 1 sinon.

  17. #17
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    Citation Envoyé par Mercure
    Sous réserve que je ne me trompe pas, les cases à cocher renvoient la valeur -1 si non cochées et la valeur 1 sinon.
    C'est pour cela que je ne comprends pas trop la requete. Comment mettre dans une requete SQL les valeurs que retourne des cases à cochés ?!

  18. #18
    Invité
    Invité(e)
    Par défaut
    les -1 correspondent au fait qu'une case à cocher est cochée (merci access).
    Je vais tester ce que tu me proposes

  19. #19
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    Si je ne me suis pas planté dans la valeur de retour des cases à cocher, la requête est formatée disons "à l'envers", car il faudrait qu'elle teste la valeur "1" à la place de "-1".
    Egalement, je placerais le test de la case AVANT les valeurs correspondantes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ...
    WHERE ( 
    (PARAMETRE.Routes = 1 and CHANTIER.Routes = PARAMETRE.Routes  ) 
    OR (PARAMETRE.Villes = 1 and CHANTIER.Villes = PARAMETRE.Villes ) 
    OR (...)
    OR (PARAMETRE.PlantationBerge = 1 and CHANTIER.PlantationBerge = PARAMETRE.PlantationBerge )
    )
    AND ( PARAMETRE.inf3 = 1 AND CHANTIER.inf3 = PARAMETRE.inf3 ) 
    OR (PARAMETRE.inf5 = 1 AND CHANTIER.inf5 = PARAMETRE.inf5 )
    )

  20. #20
    Invité
    Invité(e)
    Par défaut
    Je comprend pourquoi ça serait à l'envers étant donné que je veux récupérer que ce qui correspond à une case cochée (je teste donc si la case à cocher est bien cochée donc égale à -1...)

    Sinon les parenthèse ont elles une grosse importance?

    Faire un sous select ne serait-pas plus pratique?

Discussions similaires

  1. Sous - sous - requete SQL
    Par janjannaj dans le forum Bases de données
    Réponses: 1
    Dernier message: 19/04/2011, 08h21
  2. Sous requetes SQL
    Par Invité dans le forum Requêtes
    Réponses: 3
    Dernier message: 02/09/2009, 19h22
  3. sous requete SQL
    Par onet dans le forum Langage SQL
    Réponses: 7
    Dernier message: 06/05/2009, 10h21
  4. Plusieurs sauvegardes d'une sous-requete SQL
    Par at_first dans le forum Requêtes et SQL.
    Réponses: 16
    Dernier message: 04/12/2006, 17h52
  5. Sous-requetes SQL Oracle MsQUERY
    Par CHRISTOPHE_86 dans le forum Oracle
    Réponses: 1
    Dernier message: 11/09/2006, 20h45

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