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

MS SQL Server Discussion :

Condition(s) dans un select


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de stolx_10
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2006
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 374
    Par défaut Condition(s) dans un select
    Bonjour,

    Suite à un bug concernant la mise en état de données récupérées via une requête SQL sous MS Server, je me suis aperçu qu'un enregistrement ne s'affichait pas.

    Pour cause, la requête ci-dessous récupère la chaîne de caracteres située devant le premier "/" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select 
    distinct substring(description, 0,CHARINDEX('/',description)) as groupe_juridique 
    from e_infos_relances, e_factures_nonreglees 
    where substring(description, 0,CHARINDEX('/',description)) is not null 
    and substring(description, 0,CHARINDEX('/',description)) <> '' 
    and e_infos_relances.dossier = e_factures_nonreglees.dossier 
    and periode >= '22/05/2008' 
    and periode <= '23/05/2008' 
    order by 1
    Or, l'enregistrement manquant ne possède pas de "/" dans sa chaine mais un "-".

    Comment puis je ajouter cette nouvelle condition dans ma requête ?

    Je n'arrive pas du tout à savoir comment je peux ajouter cette nouvelle condition dans ma première ligne du SELECT.

    MERCI

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Ne vous est-il pas possible de remplacer ce tirez par un slash ?
    Sinon, vous pouvez par exemple écrire :

    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
    24
    WITH
    	CTE_SLASH AS
    	(
    		SELECT SUBSTRING(description, 0,CHARINDEX('/',description)) AS groupe_juridique 
    		FROM e_infos_relances RELANCES
    		JOIN e_factures_nonreglees IMPAYES ON RELANCES.dossier = IMPAYES.dossier
    		WHERE SUBSTRING(description, 0,CHARINDEX('/',description)) IS NOT NULL 
    		AND SUBSTRING(description, 0,CHARINDEX('/',description)) <> '' 
    		AND periode >= '22/05/2008'
    		AND periode <= '23/05/2008'
    	),
    	CTE_TIRET AS
    	(
    		SELECT SUBSTRING(description, 0,CHARINDEX('-',description)) AS groupe_juridique 
    		FROM e_infos_relances RELANCES
    		JOIN e_factures_nonreglees IMPAYES ON RELANCES.dossier = IMPAYES.dossier
    		WHERE SUBSTRING(description, 0,CHARINDEX('-',description)) IS NOT NULL 
    		AND SUBSTRING(description, 0,CHARINDEX('-',description)) <> '' 
    		AND periode >= '22/05/2008'
    		AND periode <= '23/05/2008'
    	)
    	SELECT groupe_juridique FROM CTE_SLASH
    UNION
    	SELECT groupe_juridique FROM CTE_TIRET
    l'UNION se chargera de prendre les valeurs distinctes sur les deux ensembles (à la différence de UNION ALL).
    Essayez et dites-nous si cela fonctionne ...

    @++

  3. #3
    Membre éclairé Avatar de stolx_10
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2006
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 374
    Par défaut
    Citation Envoyé par elsuket Voir le message
    Bonjour,

    Ne vous est-il pas possible de remplacer ce tirez par un slash ?
    Non, impossible. Explications : base en prod concernant une liste de clients existant depuis au moins 5 ans. Un ERP se base la dessus et des éléments comptables sont calculés sur ces clients.

    Concernant la requête, elle fonctionne MAIS j'ai des lignes en doublon dont des lignes qui affichent le "/".

    Au lieu de récupérer 12 lignes, j'en récupère 16 dont 4 avec le "/". Ces 4 là, je ne les veux pas.

    Je crois qu'en faisant l'UNION, cela génère ce porblème

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Avez-vous essayé de rajouter un DISTINCT dans les deux CTE ?

    @++

  5. #5
    Membre éclairé Avatar de stolx_10
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2006
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 374
    Par défaut
    oui mais rien y fait

  6. #6
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Et comme ceci ?

    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
    SELECT DISTINCT groupe_juridique
    FROM
    (
    		SELECT DISTINCT SUBSTRING(description, 0,CHARINDEX('-',description)) AS groupe_juridique 
    		FROM e_infos_relances RELANCES
    		JOIN e_factures_nonreglees IMPAYES ON RELANCES.dossier = IMPAYES.dossier
    		WHERE SUBSTRING(description, 0,CHARINDEX('-',description)) IS NOT NULL 
    		AND SUBSTRING(description, 0,CHARINDEX('-',description)) <> '' 
    		AND periode >= '22/05/2008'
    		AND periode <= '23/05/2008'
    	UNION
    		SELECT DISTINCT SUBSTRING(description, 0,CHARINDEX('/',description)) AS groupe_juridique 
    		FROM e_infos_relances RELANCES
    		JOIN e_factures_nonreglees IMPAYES ON RELANCES.dossier = IMPAYES.dossier
    		WHERE SUBSTRING(description, 0,CHARINDEX('/',description)) IS NOT NULL 
    		AND SUBSTRING(description, 0,CHARINDEX('/',description)) <> '' 
    		AND periode >= '22/05/2008'
    		AND periode <= '23/05/2008'
    ) TMP

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

Discussions similaires

  1. Problème avec condition WHERE dans commande SELECT
    Par Badouba76 dans le forum Objective-C
    Réponses: 3
    Dernier message: 08/11/2013, 18h19
  2. Réponses: 4
    Dernier message: 20/11/2012, 12h54
  3. condition dans requête select
    Par lionel256 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/05/2008, 10h23
  4. [MySQL] Problème de condition dans le SELECT
    Par nicocaine dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 15/06/2007, 08h20
  5. Réponses: 3
    Dernier message: 03/05/2007, 11h06

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