Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/03/2011, 12h48   #1
Candidat au titre de Membre du Club
 
Inscription : janvier 2010
Messages : 40
Détails du profil
Informations personnelles :
Âge : 62
Localisation : Dom-Tom

Informations forums :
Inscription : janvier 2010
Messages : 40
Points : 10
Points : 10
Par défaut Probleme pour modifier cette requete SQL

Bonjour

cette requete SQL (Hyperbase windev)

Code :
1
2
3
4
5
6
7
8
9
10
11
SELECT SORTIES.IDREF AS IDREF,
SUM(SORTIES.QNTSORTIE) AS SOMMEQNTSORTIE
 FROM SORTIES, ENTREES
 WHERE SORTIES.IDREF = {pIdref}
 AND SORTIES.DATESORTIE >= {pDatedebut}
 AND SORTIES.DATESORTIE <= {pDatefin}
 AND SORTIES.IDDEPOTS = {pIddepots}
 AND SORTIES.TYPESOR = {pTypesortie}
 AND SORTIES.IDENTREES = ENTREES.IDENTREES
 AND ENTREES.DATEENTREE <= {pEntreeDate}
 GROUP BY SORTIES.IDREF
marche bien, mais je dois la modifier et rajouter un critere par rapport à la table client
Dans chaque table sorties et entree, j 'ai bien le ID client, dans la table client j ai une colonne TYPECLIENT qui contient soit 1 ou 2,3,4,5

Je dois exclure de ma requete tous les clients dont le TYPECLIENT = 3

comment faire ca ??

merci à vous
phcm971 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2011, 13h57   #2
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Bonjour

Vous pouvez joindre votre table client, et appliquer un filtre dessus.

J'ai modifié votre requête pour utiliser les jointures normalisées

Code sql :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
SELECT 
    SORTIES.IDREF AS IDREF,
    SUM(SORTIES.QNTSORTIE) AS SOMMEQNTSORTIE
FROM CLIENT
INNER JOIN SORTIES 
    ON SORTIES.IDCLIENT = CLIENT.IDCLIENT
INNER JOIN ENTREES 
    ON SORTIES.IDENTREES = ENTREES.IDENTREES
WHERE SORTIES.IDREF = {pIdref}
    AND SORTIES.DATESORTIE >= {pDatedebut}
    AND SORTIES.DATESORTIE <= {pDatefin}
    AND SORTIES.IDDEPOTS = {pIddepots}
    AND SORTIES.TYPESOR = {pTypesortie}
    AND ENTREES.DATEENTREE <= {pEntreeDate}
    AND TYPECLIENT <> 3
GROUP BY SORTIES.IDREF
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2011, 18h08   #3
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837
bonjour

je ne connais ce SQL,

mais a propos de la date, il serait plus judicieux d'utiliser BETWEEN

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT 
    SORTIES.IDREF AS IDREF,
    SUM(SORTIES.QNTSORTIE) AS SOMMEQNTSORTIE
FROM CLIENT
INNER JOIN SORTIES 
    ON (SORTIES.IDCLIENT = CLIENT.IDCLIENT AND CLIENT.TYPECLIENT <> 3)
INNER JOIN ENTREES 
    ON SORTIES.IDENTREES = ENTREES.IDENTREES
WHERE SORTIES.IDREF = {pIdref}
    AND SORTIES.DATESORTIE BETWEEN {pDatedebut} AND {pDatefin}
    AND SORTIES.IDDEPOTS = {pIddepots}
    AND SORTIES.TYPESOR = {pTypesortie}
    AND ENTREES.DATEENTREE <= {pEntreeDate}
 
GROUP BY SORTIES.IDREF
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2011, 13h09   #4
Candidat au titre de Membre du Club
 
Inscription : janvier 2010
Messages : 40
Détails du profil
Informations personnelles :
Âge : 62
Localisation : Dom-Tom

Informations forums :
Inscription : janvier 2010
Messages : 40
Points : 10
Points : 10
SQL version Windev

merci a vous, j essai les 2 solutions et vous tiens au courant
phcm971 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2011, 19h46   #5
Membre expérimenté
 
Inscription : octobre 2002
Messages : 654
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 654
Points : 552
Points : 552
Bonjour,
Attention si TYPECLIENT est nullable, la requete de aieuu ne renverra pas les lignes corrrespondant à un typeclient null.
Dans ce cas il faudrait remplacer par
Code :
AND (TYPECLIENT <> 3 OR TYPECLIENT IS NULL)
Car en SQL NULL n'est pas différent de 3, il n'est pas égal à 3,en fait il n'est pas comparable à 3.
Cordialement
Soazig
soazig est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h40.


 
 
 
 
Partenaires

Hébergement Web