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 :

probleme de requete


Sujet :

Langage SQL

  1. #21
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    Citation Envoyé par hwijra
    en fait j desire avoir un resultat sous la forme du tableau suivant

    pour ceux qui ont la flême il y a ça dans le fichier excel (sur 4 colonnes) :
    ville nbr_mar_prv nbr_mar_def nbr_mar_rad
    très clair

  2. #22
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 57
    Points : 57
    Points
    57
    Par défaut
    autrement dit, d'après ce que j'ai compris, ça serait :

    nom ville|nbr_mar_prv| nbr_mar_def |nbr_mar_rad
    paris 15 65 68

    ou c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    1ere condition (résultat en rouge)
    where (M.NUM_DAM=D.NUM_DAM
    and D.NUM_SOU_DAM=M.NUM_SOU_DAM
    and M.DAT_STA_DEF between '01-JAN-2006' and '31-DEC-2006' )
    
    2eme condition
    or (M1.NUM_DAM=D.NUM_DAM
    and D.NUM_SOU_DAM=M1.NUM_SOU_DAM
    and M1.DAT_STA_PRV between '01-JAN-2006' and '31-DEC-2006')
    
    3eme condition :
    or (M2.NUM_DAM=D.NUM_DAM
    and D.NUM_SOU_DAM=M2.NUM_SOU_DAM
    and M2.DAT_RAD is not null)

  3. #23
    Candidat au Club
    Inscrit en
    Août 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 18
    Points : 2
    Points
    2
    Par défaut
    merci pour votre aide mais finalement j crois que j'ai trouvé la solution et cela en utilisant la clause case et la requete est devenue sous la forme suivante :
    select DES_DAM,
    count(num1) DEF2006,
    count(num2) PRV2006,
    count(num3) RAD2006

    from (
    SELECT DES_DAM
    , case when (marin.dat_sta_def between ' 01-jan-2006' and '31-dec-2006') then marin.num_ins end num1
    , case when (marin.dat_sta_prv between ' 01-jan-2006' and ' 31-dec-2006') then marin.num_ins end num2
    , case when (marin.dat_rad between ' 01-jan-2006' and ' 31-dec-2006') then marin.num_ins end num3
    FROM marin, dam
    where dam.num_dam=marin.num_dam and dam.num_sou_dam=marin.num_sou_dam )
    group by DES_DAM;

  4. #24
    Candidat au Club
    Inscrit en
    Août 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 18
    Points : 2
    Points
    2
    Par défaut
    rebonjour les amis en fait j voudrais vous poser une question j'ai un tableau sous la forme ci-dessous et j voudrais calculer le total mais a partir des données de ce tableau svp si quelqu'un peut m'aider dans ce sujet
    Fichiers attachés Fichiers attachés
    • Type de fichier : doc h.doc (24,5 Ko, 57 affichages)

  5. #25
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    Quand tu dis total, cela veut-il dire cap+chmec+spat ?

  6. #26
    Candidat au Club
    Inscrit en
    Août 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 18
    Points : 2
    Points
    2
    Par défaut
    bonjour tt le monde vous avez raison c'est de ce total dont j parle merciiii

  7. #27
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 57
    Points : 57
    Points
    57
    Par défaut
    il suffit de marquer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select (cap+chmec+spat) ...

  8. #28
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    Salut,
    Comme l'a dit fisto, il suffit de faire une somme des 3 champs. Il faut que cette requête soit impriquée dans un update pour mettre à jour le champ total. Essaie ce code pour voir :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    update TaTable
    set Total = (select T.Caporpat+T.Chmec+T.Spat
                 from TaTable T);

  9. #29
    Candidat au Club
    Inscrit en
    Août 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 18
    Points : 2
    Points
    2
    Par défaut
    en fait j'ai oublier de mentionner que les champs dont j parlais eux meme sont crées par des requetes a partir d'autre table c pourquoi j trouve cette dificulté.

  10. #30
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    Citation Envoyé par hwijra
    en fait j'ai oublier de mentionner que les champs dont j parlais eux meme sont crées par des requetes a partir d'autre table c pourquoi j trouve cette dificulté.
    Je ne vois pas trop comment cela pourrait influencer la mise à jour du champ total.
    Chaque requête est exécutée indépendemment des autres. tu n'exécutera la requête concernant total que lorsque tu auras tous les éléments en main. Si tu pouvais donner plus d'explications ça serait mieux (je crois que j'ai loupé qqch).

  11. #31
    Candidat au Club
    Inscrit en
    Août 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 18
    Points : 2
    Points
    2
    Par défaut
    vous avez parler de mise a jour de table sauf que ce tableau n'est pa une table dans la base de données c'est une requete que moi meme avait crée donc j vois pa comment j pourais faire cette mise a jour la voila la requete :

  12. #32
    Candidat au Club
    Inscrit en
    Août 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 18
    Points : 2
    Points
    2
    Par défaut
    la voila
    Fichiers attachés Fichiers attachés

  13. #33
    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
    Simplement comme ca, non ? :
    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
    20
    21
    22
    23
    select  DES_DAM, 
         count(num1) as patrons_capitaines,
         count(num2) as chef_mecanicien,
         count(num3) as second_patron,
         count(num4) as secon_mecanicien,
         count(num5) as lieutenant_pont,
          count(num6) as lieutenant_machine,
           count(num7) as matelot
    , count(num1) + count(num2) + count(num3) as total
    from (                                                              
    SELECT DES_DAM                                                       
    , case when fonction.des_fon in ('PATRON','CAPITAINE') then marin.num_ins end  num1
    , case when fonction.des_fon= 'CHEF MECANICIEN' then marin.num_ins end  num2
    , case when fonction.des_fon= 'SECOND PATRON' then marin.num_ins  end num3
    , case when fonction.des_fon= 'SECOND MECANICIEN' then marin.num_ins  end num4
    , case when fonction.des_fon= 'LIEUTENANT PONT' then marin.num_ins  end num5
    , case when fonction.des_fon= 'LIEUTENANT MACHINE' then marin.num_ins  end num6
    , case when fonction.des_fon= 'MATELOT' then marin.num_ins  end num7
                     FROM fonction, marin, qua_marin, qualification,fon_qualification,dam 
                     where  qua_marin.num_ins=marin.num_ins and qua_marin.cod_qua=qualification.cod_qua
                                and qualification.cod_qua=fon_qualification.cod_qua and fon_qualification.cod_fon=fonction.cod_fon
                                 and dam.num_dam=marin.num_dam and dam.num_sou_dam=marin.num_sou_dam ) 
    group  by  DES_DAM;
    Et, pour info, mettre les "AS" c'est mieux, au cas où tu oublierais une virgule

  14. #34
    Candidat au Club
    Inscrit en
    Août 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 18
    Points : 2
    Points
    2
    Par défaut
    merci pour ton aide mais meme sans le as ca marche .en tt cas moi j'ai jamais
    utiliser le as dans mes requetes.

  15. #35
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    Citation Envoyé par hwijra
    merci pour ton aide mais meme sans le as ca marche .en tt cas moi j'ai jamais
    utiliser le as dans mes requetes.
    Oui c'est normal que ça marche sans le as
    Citation Envoyé par mindiell
    Et, pour info, mettre les "AS" c'est mieux, au cas où tu oublierais une virgule
    Le as permet au pgm de ne pas planter si tu oublies une virgule. C'est tout. Le mettre n'est pas nécessaire, c'est plus une précaution.

  16. #36
    Candidat au Club
    Inscrit en
    Août 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 18
    Points : 2
    Points
    2
    Par défaut
    oui j vois merci

  17. #37
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    Si tous tes tracas ont disparus, un serait le bienvenu.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. probleme de requete
    Par doudou1 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/04/2004, 13h42
  2. probleme avec requete sql aime pas les strings
    Par lil_jam63 dans le forum Bases de données
    Réponses: 3
    Dernier message: 24/02/2004, 14h45
  3. PROBLEME DE REQUETE IMBRIQUEE
    Par fleuve007 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 31/12/2003, 15h33
  4. probleme de requete
    Par LineLe dans le forum ASP
    Réponses: 8
    Dernier message: 17/09/2003, 16h47
  5. Probleme de requete
    Par misterbillyboy dans le forum Requêtes
    Réponses: 4
    Dernier message: 15/07/2003, 08h24

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