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

Sybase Discussion :

comment faire requête qui boucle sur le résultat d'une autre req


Sujet :

Sybase

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 79
    Par défaut comment faire requête qui boucle sur le résultat d'une autre req
    Bonjour TLM,

    j'ai une base de données SyBase qui tourne sous UNIX,

    je me conecte depuis putty sur cette BD pour en tirer des données ou enregistrements

    je veux faire une requête SQL (j'accéde via isql ....) pour ca :

    ma table : TAB
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    champ_1----champ_2
    --A1---------1001
    --A1---------1001
    --A1---------1002
    --A1---------1011
    --A1---------2013
    --A2---------1001
    --A2---------1001
    --A2---------1002
    --A2---------1005
    --A3---------1001
    --A3---------1005
    donc je veux un résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    champ_1----champ_2----champ_3_nb
    --A1---------1001----------2-------
    --A1---------1002----------1-------
    --A1---------1011----------1-------
    --A1---------2013----------1-------
    --A2---------1001----------2-------
    --A2---------1002----------1-------
    --A2---------1005----------1-------
    --A3---------1001----------1-------
    --A3---------1005----------1-------
    voilà,

    donc un truc de requête qui boucle sur le résultat d'une autre requête !
    avec Sybase, j'arrive pas a trouver comment faire tourner une requête qui boucle sur le résultat d'une autre

    si quelqu'un peux m'aiderpour ca, merci d'avance

  2. #2
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 137
    Par défaut
    Bonjour

    je pense que tu dois pouvoir utiliser un curseur pour ton probleme
    Voici un exemple :

    declare Liste_Tables cursor for
    (
    select name from sysobjects where type='U'
    )

    declare @NomTable varchar(40)
    open Liste_Tables
    fetch Liste_Tables into @NomTable

    while (@@sqlstatus = 0)
    begin

    if (select count(*) from Exploit_Nis..TABLES where NOM_BASE = @db_name and NOM_TABLE = @NomTable) = 0
    begin
    insert Exploit_Nis..TABLES values ( @NomTable, @db_name )
    end

    fetch Liste_Tables into @NomTable
    end

    close Liste_Tables



    jeeps64

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 79
    Par défaut
    merci pour ta réponse,

    mais en tant que débutant avec SyBase, je vois ta solution est un peu compliqué pour moi !!

    je sais pas s'il y'en a une autre solution purement requête SQL plus raisonable a mes connaissances SyBase.

    merci pour ta solution que je l'a prends en considération malgré tout

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 137
    Par défaut
    Ma reponse fut un epu rapide et inadaptée ce matin

    Voici la requete qui devrait resoudre ta demande :

    select champ_1,champ_2,count(*) as champ_3 from TAB group by champ_1,champ_2


    jeeps64

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 79
    Par défaut
    coool ca marche comme je le souhaite 1000 et 1000 merci



    juste un truc, y'a t'il un moyen d'en tirer la somme dans l'affichage pour le champs : champ_2_nb

    c'est a dire avoir ce résultat :

    [ CODE]
    champ_1----champ_2----champ_3_nb
    --A1---------1001----------2-------
    --A1---------1002----------1-------
    --A1---------1011----------1-------
    --A1---------2013----------1-------

    TOTAL----------------------5-------

    --A2---------1001----------2-------
    --A2---------1002----------1-------
    --A2---------1005----------1-------

    TOTAL----------------------4------

    --A3---------1001----------1-------
    --A3---------1005----------1-------

    TOTAL----------------------2-------

    TOTAL_GENERALE-----------11------

    [/CODE]

    sachant que TOTAL_GENERALE = somme des totaux

    et merci d'avance

    PS : je fesais ca en ORACLE mais en Sybase, aucune idée !!!

  6. #6
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 79
    Par défaut
    desolé pour mettre l'exemple entre c'est a dire avoir ce résultat :

    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
     
    champ_1----champ_2----champ_3_nb
    --A1---------1001----------2-------
    --A1---------1002----------1-------
    --A1---------1011----------1-------
    --A1---------2013----------1-------
     
    TOTAL----------------------5-------
     
    --A2---------1001----------2-------
    --A2---------1002----------1-------
    --A2---------1005----------1-------
     
    TOTAL----------------------4------
     
    --A3---------1001----------1-------
    --A3---------1005----------1-------
     
    TOTAL----------------------2-------
     
    TOTAL_GENERALE-----------11------
    sachant que TOTAL_GENERALE = somme des totaux

    et merci d'avance

    PS : je fesais ca en ORACLE mais en Sybase, aucune idée !!!

  7. #7
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 137
    Par défaut
    directement, je ne vois pas
    mais je ne suis pas un expert du developpement SQL
    La seule chose que je peux te proposer, c'est un mix entre :

    select champ_1,count(*) as TOTAL from TAB group by champ_1
    et
    la commande precedente

    dans une procedure stockée par exemple

    jeeps64

  8. #8
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Par défaut
    On peut utiliser une extension de Transact-SQL pour cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    select col1, col2, count(*)
      from tab
     group by col1, col2
     order by col1, col2
    compute sum(count(*)) by col1
    compute sum(count(*))
    Michael

  9. #9
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 79
    Par défaut
    merci infiniment pour les réponses

    ma question maintenant est si j'ai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    champ_1----champ_2----champ_date
    --A1---------1001------01/01/2007
    --A1---------1001------Null-----
    --A1---------1002------Null-----
    --A1---------1011------03/02/2007
    --A1---------2013------03/02/2007
    --A2---------1001------03/02/2007
    --A2---------1001------Null
    --A2---------1002------Null
    --A2---------1005------Null
    --A3---------1001------01/03/2007
    --A3---------1005------12/04/2007
    ou le champ_date contient ceux qui sont actif (date d'activation).

    donc je veux avoir ce résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    champ_1----champ_2----champ_3_nb------nb_actif
    --A1---------1001----------2----------------1
    --A1---------1002----------1----------------0
    --A1---------1011----------1----------------1
    --A1---------2013----------1----------------1
    --A2---------1001----------2----------------1
    --A2---------1002----------1----------------0
    --A2---------1005----------1----------------0
    --A3---------1001----------1----------------1
    --A3---------1005----------1----------------1
    donc nb_actif contient le nombre activé (date différent de Null)

    est il possible pour ca ?

    thanks en advance

  10. #10
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Par défaut
    Je suggère un bon bouquin sur le SQL...

    En attendant, pour compter le nombre de ligne qui ont le champ "date" à non-null, tu peux faire qqch comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select ..., sum( case when date_col is null then 0 else 1 end)
    from ...
    where ...
    group by ...
    Michael

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ODBC] Exécuter une requête sur le résultat d'une autre
    Par che0po dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 14/05/2012, 11h29
  2. Comment faire boucler un job sur le résultat d'une requête SQL ?
    Par galadorn dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 27/04/2011, 11h42
  3. Requête SQL sur le résultat d'une autre requête
    Par rec82 dans le forum Bases de données
    Réponses: 10
    Dernier message: 12/12/2008, 17h40
  4. Réponses: 2
    Dernier message: 11/06/2007, 16h40
  5. requête qui boucle sur une autre requête
    Par super_dz dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/09/2006, 20h02

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