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 :

Problème de requête avec OR


Sujet :

Langage SQL

  1. #1
    Membre habitué

    Profil pro
    Consultant Business Intelligence
    Inscrit en
    Novembre 2005
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant Business Intelligence

    Informations forums :
    Inscription : Novembre 2005
    Messages : 284
    Points : 186
    Points
    186
    Par défaut Problème de requête avec OR
    Bonjour,

    J'ai un petit problème avec une requêtte sur 2 tables et un OR.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT     *
    FROM         T_Tempory
    WHERE     (SUBSTRING(numberPrim, 1, 1) > 2) OR (SUBSTRING(numberSec, 1, 1) > 2)  ORDER BY DateP
    Le problème c'est que dans le résultat il me manque le cas ou les 2 conditions sont ok en même temps!
    c'est à dire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (SUBSTRING(numberPrim, 1, 1) > 2) and (SUBSTRING(numberSec, 1, 1) > 2)
    J'ai essayé d'ajouté cette ligne à la suite de ma première requête mais rien y fait j'ai pas tout les enregistrement.

    Je travail sous MS-SQL Server 2005.

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonjour,

    Si j'ai bien compris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    SELECT *FROM         T_Tempory
    WHERE 
        (    
         (SUBSTRING(numberPrim, 1, 1) > 2) 
    OR (SUBSTRING(numberSec, 1, 1) > 2) 
         )
    OR
        ( 
          (SUBSTRING(numberPrim, 1, 1) > 2) 
    AND (SUBSTRING(numberSec, 1, 1) > 2)
         )
     
    ORDER BY DateP

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Il y a un truc étrange dans ta requête : tu utilises une fonction SUBSTRING qui est une fonction de chaîne de caractères et qui te retourne une chaîne de caractères (en l'occurrence 1 seul caractère) et tu compares ce résultat à une valeur numérique !

    En plus, SUBSTRING(chaine, 1, 1) est équivalent à LEFT(chaine, 1).

  4. #4
    Membre habitué

    Profil pro
    Consultant Business Intelligence
    Inscrit en
    Novembre 2005
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant Business Intelligence

    Informations forums :
    Inscription : Novembre 2005
    Messages : 284
    Points : 186
    Points
    186
    Par défaut
    Citation Envoyé par Chtulus Voir le message
    Bonjour,

    Si j'ai bien compris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    SELECT *FROM         T_Tempory
    WHERE 
        (    
         (SUBSTRING(numberPrim, 1, 1) > 2) 
    OR (SUBSTRING(numberSec, 1, 1) > 2) 
         )
    OR
        ( 
          (SUBSTRING(numberPrim, 1, 1) > 2) 
    AND (SUBSTRING(numberSec, 1, 1) > 2)
         )
     
    ORDER BY DateP
    Exacement, c'est ce que j'ai fait mais ça ne fonctionne pas...ça ne prend pas les valeurs pour le 3ème cas...

  5. #5
    Membre habitué

    Profil pro
    Consultant Business Intelligence
    Inscrit en
    Novembre 2005
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant Business Intelligence

    Informations forums :
    Inscription : Novembre 2005
    Messages : 284
    Points : 186
    Points
    186
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Il y a un truc étrange dans ta requête : tu utilises une fonction SUBSTRING qui est une fonction de chaîne de caractères et qui te retourne une chaîne de caractères (en l'occurrence 1 seul caractère) et tu compares ce résultat à une valeur numérique !

    En plus, SUBSTRING(chaine, 1, 1) est équivalent à LEFT(chaine, 1).
    Ma chaîne de caractère commence par un chiffre, donc je compare bien 2 chiffre. Pour le LEFT merci mais ça change quoi de mon SUBSTRING? à part un argument en moins mais je suis pas à quelques caractères de plus ou moins dans mon code.. ;-) Mais merci.

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Désolé mais pour moi '3' n'est pas supérieur à 2, pas plus qu'une pomme n'est supérieure à 1. Ca ne veut tout simplement rien dire !

    Essaie de changer le type avant la comparaison :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT     *
    FROM T_Tempory
    WHERE (CAST(LEFT(numberPrim, 1) AS INTEGER) > 2) 
      OR (CAST(LEFT(numberSec, 1) AS INTEGER) > 2)  
    ORDER BY DateP
    Je ne pense pas que OR soit un ou exclusif (qui exclue TRUE OR TRUE) donc ta requête devrait donner aussi les lignes dans lesquelles les deux conditions sont satisfaites. Ou alors c'est SQL Server qui n'est pas logique mais même si j'ai de gros doutes sur la qualité des logiciels Microsoft, je ne peux pas imaginer un tel bug ! Si ? Non ! Quand même pas ?

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Votre SGBD fera la conversion implicitement, mais la fonction SUBSTRING prend en argument du caractère et renvoie du caractère.

    Idéalement il vous faut écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CAST(SUBSTRING(numberPrim, 1, 1) as integer) > 2
    Ca montre que vous avez compris le principe et ça évite une conversion implicite au moteur.


    Maintenant, un autre point, qui est de la logique.

    Vous faites une requête ou vous demandez la population qui remplie la condition A ou la condition B.
    Puis vous demandez la population qui remplie les conditions A et B simultanément. Et bien pas la peine, vous les avez déjà !

    Les populations qui remplissent A & B sont déjà comprises dans A (et sont aussi comprises dans B), que vous avez déjà sélectionné !

    Bref, votre première requête répond déjà à vos attentes.

    Edit : Cinephil a été plus rapide

  8. #8
    Membre habitué

    Profil pro
    Consultant Business Intelligence
    Inscrit en
    Novembre 2005
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant Business Intelligence

    Informations forums :
    Inscription : Novembre 2005
    Messages : 284
    Points : 186
    Points
    186
    Par défaut
    Moi aussi je pensait que ça jouait mais si je fait une requête qui vérifie A. Je note le nombre de Row obtenu ensuite une requêtte qui vérifie B. Et je fais le total des Rows obtenu j'obtiens un résultat supérieur que lorsque je met les deux conditions ensembles.

    Et si je fais cette requêtte :
    ¨
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    (SUBSTRING(numberPrim, 1, 1) > 2) 
    AND (SUBSTRING(numberSec, 1, 1) > 2)
    J'obient justement la différence d'enregistrement par rapport à ce que j'ai vérifé avant....Est-ce un bug finalement`lol

    En tout cas merci, et pour le cast on va pas s'énérver mais bon faut faire preuve de bonne fois parfois...

  9. #9
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par t-die Voir le message
    En tout cas merci, et pour le cast on va pas s'énérver mais bon faut faire preuve de bonne fois parfois...
    Quand je cherche un bug, je commence par être rigoureux dans la syntaxe.
    Si le bug est toujours là, je cherche ailleurs. Par exemple, du côté de la logique...

    si je fait une requête qui vérifie A. Je note le nombre de Row obtenu ensuite une requêtte qui vérifie B. Et je fais le total des Rows obtenu j'obtiens un résultat supérieur que lorsque je met les deux conditions ensembles.
    C'est logique !

    Exemple...
    id / numberPrim / numberSec
    1 / '123' / '456'
    2 / '333' / '444'
    3 / '456' / '123'

    1) Lignes qui satisfont CAST(LEFT(numberPrim, 1)) > 2 :
    id / numberPrim / numberSec
    2 / '333' / '444'
    3 / '456' / '123'

    Sous-Total 1) : 2 lignes

    2) Lignes qui satisfont CAST(LEFT(numberSec, 1)) > 2 :
    id / numberPrim / numberSec
    1 / '123' / '456'
    2 / '333' / '444'

    Sous-Total 2) : 2 lignes

    Total 1) + 2) : 4 lignes

    Pourtant il n'y a que 3 lignes dans la table !

    3) Lignes qui satisfont les deux conditions :
    id / numberPrim / numberSec
    2 / '333' / '444'

    Sous-Total 3) : 1 ligne

    Tiens ! C'est la différence entre 1) + 2) et le nombre de lignes de ma table !

  10. #10
    Membre habitué

    Profil pro
    Consultant Business Intelligence
    Inscrit en
    Novembre 2005
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant Business Intelligence

    Informations forums :
    Inscription : Novembre 2005
    Messages : 284
    Points : 186
    Points
    186
    Par défaut
    Je me suis mal expliqué c'est pas le nombre d'enregistrement dans la table que prend. Mais le nombre d'enregistrement du résultat avec les 2 requettes.
    Concretement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT     *
    FROM T_Tempory
    WHERE (CAST(LEFT(numberPrim, 1) AS INTEGER) > 2) 
      OR (CAST(LEFT(numberSec, 1) AS INTEGER) > 2)  
    ORDER BY DateP
    Donne 4656 enregistrements.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT     *
    FROM T_Tempory
    WHERE (CAST(LEFT(numberPrim, 1) AS INTEGER) > 2) ORDER BY DateP
    Donne 2349 enregistrements
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT     *
    FROM T_Tempory
    WHERE (CAST(LEFT(numberSec, 1) AS INTEGER) > 2) ORDER BY DateP
    Donne 2448 Enregistrements.
    Donc 2349 + 2448 = 4797 > 4656

    Et la fin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT     *
    FROM T_Tempory
    WHERE (CAST(LEFT(numberSec, 1) AS INTEGER) > 2) AND (CAST(LEFT(numberPrim, 1) AS INTEGER) > 2)
    Donne 141 enregistrements, la différence entre 4656 et 4797.
    Et la proposition de Chtulus ne fonctionne pas, j'obtien 4656 enregistrements également.

  11. #11
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Renvoyez les bases des ensembles avec deux patates qui s'entrecroisent, si vous faites : A U B = A + B - (A inter B).
    (il y a surement quelques mauvais raccourcis dans mes opérateurs, ça fait quelques temps que je n'ai pas fait ça, mais c'est l'idée) :

    A = 2349
    B = 2448
    A inter B = 141
    A U B = 2349 + 2448 - 141 = 4656

    Tout est normal et cohérent dans vos résultats.

    J'ai l'impression qu'en réalitez vous ne voulez pas A U B mais A + B avec ses doublons :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT     *
    FROM T_Tempory
    WHERE (CAST(LEFT(numberPrim, 1) AS INTEGER) > 2)
    UNION ALL
    SELECT     *
    FROM T_Tempory
    WHERE (CAST(LEFT(numberSec, 1) AS INTEGER) > 2) ORDER BY Date

  12. #12
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    C'est seulement que tu interprètes mal le résultat !
    Reprenons les résultats de tes requêtes, dans un ordre différent...

    1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT     *
    FROM T_Tempory
    WHERE (CAST(LEFT(numberPrim, 1) AS INTEGER) > 2) ORDER BY DateP
    Donne 2349 enregistrements
    Ce qui ne signifie pas que parmi ces 2349 lignes, aucune ne satisfait pas la seconde condition.

    2)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT     *
    FROM T_Tempory
    WHERE (CAST(LEFT(numberSec, 1) AS INTEGER) > 2) ORDER BY DateP
    Donne 2448 Enregistrements.
    Ce qui ne signifie pas que parmi ces 2448 lignes, aucune ne satisfait pas la première condition.

    Donc 2349 + 2448 = 4797
    L'opération est juste mais elle est inutile !
    Il y a des lignes communes aux deux côtés du +.
    C'est pour ça que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT     *
    FROM T_Tempory
    WHERE (CAST(LEFT(numberPrim, 1) AS INTEGER) > 2) 
      OR (CAST(LEFT(numberSec, 1) AS INTEGER) > 2)  
    ORDER BY DateP
    Donne 4656 enregistrements.
    Une ligne qui satisfait les deux conditions n'apparaîtra qu'une seule fois dans le résultat de la requête alors que tu penses qu'il faut additionner les lignes de chaque condition pour trouver le total.

    C'est exactement ce que j'expliquais dans mon message précédent.

    Cherche une ligne qui satisfait les deux conditions et regarde si tu la retrouves bien dans le résultat de la requête complète.

    Ou alors Chtulus a trouvé ce qu'en fait tu cherches à obtenir comme résultat, c'est à dire l'union totale de deux sous-requêtes.

  13. #13
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Ou alors Chtulus a trouvé ce qu'en fait tu cherches à obtenir comme résultat, c'est à dire l'union totale de deux sous-requêtes.
    Non la requête de Chtulus est strictement égale à la première de t-die.
    WHERE ( A OR B ) OR ( A AND B ) se traduit par
    WHERE ( A OR B ) OR A OR B soit encore
    WHERE A OR B OR A OR B

    Qui est complètement égal à WHERE A OR B

  14. #14
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Au temps pour moi ! Je pensais à la dernière requête postée, c'est à dire la tienne Waldar !
    Je rends à Waldar ce qui appartient à Waldar !

  15. #15
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut !

    Je pense pas que notre ami veuille l'union all, Waldar.
    Votre première hypothèse était sans aucun doute la bonne : il a voulu vérifier ses résultats, il n'a pas pensé à la bonne formule...

    t-die, tu peux vérifier en faisant :

    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
     
    (
    SELECT     *
    FROM T_Tempory
    WHERE (CAST(LEFT(numberPrim, 1) AS INTEGER) > 2)
    UNION ALL
    SELECT     *
    FROM T_Tempory
    WHERE (CAST(LEFT(numberSec, 1) AS INTEGER) > 2) ORDER BY Date
    )
    MINUS
    SELECT     *
    FROM T_Tempory
    WHERE (CAST(LEFT(numberPrim, 1) AS INTEGER) > 2) 
      OR (CAST(LEFT(numberSec, 1) AS INTEGER) > 2)  
    ORDER BY DateP
    Tu vas t'apercevoir que les deux ensembles sont égaux...

    Citation Envoyé par Waldar
    Renvoyez les bases des ensembles avec deux patates qui s'entrecroisent, si vous faites : A U B = A + B - (A inter B).
    (il y a surement quelques mauvais raccourcis dans mes opérateurs, ça fait quelques temps que je n'ai pas fait ça, mais c'est l'idée) :
    En fait, ce ne sont pas vos opérateurs... mais votre notation ! Ce que vous voulez exprimer, ce sont les cardinaux des ensembles :

    CARD(A U B) = CARD(A) + CARD(B) - CARD(A INTER B)
    (Vu qu'on faisait remarquer à t-die qu'on mélange pas les choux et les carottes, on va faire un petit effort pour ne pas mélanger les ensembles et les entiers )

    pas A U B mais A + B avec ses doublons
    En fait, dans les ensembles, il n'y a pas de doublons...
    Les doublons, ça n'existe pas ni dans l'ensembliste ni dans le relationnel (qui est juste ensembliste avec des opérateurs en plus).
    Les doublons, les UNION ALL, les SELECT, c'est du SQL ! (Sorry Query Langage comme dirait celui qu'on ne citera pas).
    (La version ensembliste et relationnelle du SELECT, c'est le SELECT DISTINCT !)

    Tout cela n'est pas bien grave, mais je trouve qu'en tant que SQLeux, il faut être un peu humble quand on fait des grandes leçons d'ensemblisme, de sacs de billes, ...
    (Waldar, c'est pas du tout contre vous : je pense à quelqu'un d'autre sur le coup)

  16. #16
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonjour tout le monde,

    Citation Envoyé par Waldar Voir le message
    Non la requête de Chtulus est strictement égale à la première de t-die.
    WHERE ( A OR B ) OR ( A AND B ) se traduit par
    WHERE ( A OR B ) OR A OR B soit encore
    WHERE A OR B OR A OR B

    Qui est complètement égal à WHERE A OR B
    Effectivement, ! Mais je me soigne... J'suis en plein dedans et les explications que vous donnez ainsi que celles de pacmann sont très claires. J'ai encore du travail !

    A+

  17. #17
    Membre habitué

    Profil pro
    Consultant Business Intelligence
    Inscrit en
    Novembre 2005
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant Business Intelligence

    Informations forums :
    Inscription : Novembre 2005
    Messages : 284
    Points : 186
    Points
    186
    Par défaut
    Ok merci à vous tous je crois avoir compris merci d'avoir pris le temps de m'aider.
    Ce post est résolu!

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

Discussions similaires

  1. Problème de requête avec l'agrégat
    Par bertrand_declerck dans le forum Langage SQL
    Réponses: 10
    Dernier message: 24/08/2005, 16h59
  2. Problème concaténation requête avec ORACLE
    Par kobe dans le forum Bases de données
    Réponses: 2
    Dernier message: 16/08/2005, 11h57
  3. Réponses: 3
    Dernier message: 11/10/2004, 17h26
  4. problème de requête avec jointures
    Par tinhat dans le forum Requêtes
    Réponses: 7
    Dernier message: 11/08/2003, 10h33
  5. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 18h02

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