Sql reqête - Compter les valeurs NULL - comment faire ?

Le
Itsejoke
Bonjour à tous,

J'aurais d'aide pour construire une requête, étant débutant :-) pas
facile

Pour de la CRM, j'aurais besoin de sortir, tous les IC, par entité, qui ont
rentré au mois une Affaire(même ceux qui ont rentré)

J'ai trois tables à joindre, T1, T2, T3 :
T1 = USER
T2 = Collaborateur pour ENTITE
T3 = AFFAIRE

1 ENTITE a n USERS
1 USER a n AFFAIRES
1 ENTITE a n AFFAIRES


SELECT USER.NomUser as Collaborateur, Collaborateur.NomEntite AS Entité,
Affaire.NomAffaire as Affaire
FROM USER INNER JOIN
EVENT_10 ON USER.NomUser = Collaborateur.NomPrenom
INNER JOIN
EVENT ON USER.IdUser = Affaire.Appartient

ORDER BY NomUser

Donc là j'arrive à sortir les users qui ont fait au moins une affaire :

Collaborateur Entité Affaire
Collab 1 Entité1
080909 - 18038
Collab 1 Entité1
080827 - 17840
Collab 1 Entité1
080929 - 18411
Collab 2 Entité1
080909 - 18099
Collab 2 Entité1
080827 - 17832
Collab 2 Entité1
080929 - 18451
Collab 2 Entité1
080909 - 18032
Collab 3 Entité1
080827 - 17583
Collab 3 Entité2
080929 - 18872
Collab 3 Entité2
080827 - 17462
Collab 4 Entité3
080929 - 18932
Collab 4 Entité3
080909 - 18233
Collab 4 Entité3
080827 - 17444
Collab 4 Entité3
080929 - 18873

Maintenant on me demande faire apparaître même les collaboteurs qui n'ont
pas saisi d'affaire.

Collaborateur Entité Affaire
Collab 1 Entité1
080909 - 18038
Collab 1 Entité1
080827 - 17840
Collab 1 Entité1
080929 - 18411
Collab 2 Entité1
080909 - 18099
Collab 2 Entité1
080929 - 18451
Collab 2 Entité1
080909 - 18032
Collab 3 Entité2
080929 - 18872
Collab 3 Entité2
080827 - 17462
Collab 4 Entité3
080929 - 18932
Collab 4 Entité3
080909 - 18233
Collab 4 Entité3
080827 - 17444
Collab 5 Entité3 NULL
Collab 6 Entité3 NULL
Collab 7 Entité3 NULL
Collab 8 Entité3 NULL
Collab 9 Entité3 NULL

Comment fait-on pour faire apparaître les lignes NULL
Après je souhaite les compter : je fais dans SSRS :

Collaborateur Entité Nom
d'Affaires
Collab 1 Entité1 3
Collab 2 Entité1 3
Collab 3 Entité2 2
Collab 4 Entité3 3
Collab 5 Entité3 0
Collab 6 Entité3 0
Collab 7 Entité3 0
Collab 8 Entité3 0
Collab 9 Entité3 0
Collab 10 Entité4 9

Merci de aide précieuse.
Hervé
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Fred BROUARD
Le #17501221
Compter du NULL vous donnera toujours zéro. SI dans mon porte monaie je
n'ais ni pièce ni monnaie, quel montant puis-je payer ? ZERO !

Votre demande n'est donc pas calire du tout. Je crois que même vous,
vous ne comprenez pas ce que vous faites. Ou alors vous vous exprimez mal.

A +


Itsejoke a écrit :
Bonjour à tous,

J'aurais d'aide pour construire une requête, étant débutant ...:-) pas
facile...

Pour de la CRM, j'aurais besoin de sortir, tous les IC, par entité, qui ont
rentré au mois une Affaire...(même ceux qui ont rentré...)

J'ai trois tables à joindre, T1, T2, T3 :
T1 = USER
T2 = Collaborateur pour ENTITE
T3 = AFFAIRE

1 ENTITE a n USERS
1 USER a n AFFAIRES
1 ENTITE a n AFFAIRES


SELECT USER.NomUser as Collaborateur, Collaborateur.NomEntite AS Entité,
Affaire.NomAffaire as Affaire
FROM USER INNER JOIN
EVENT_10 ON USER.NomUser = Collaborateur.NomPrenom
INNER JOIN
EVENT ON USER.IdUser = Affaire.Appartient

ORDER BY NomUser

Donc là j'arrive à sortir les users qui ont fait au moins une affaire :

Collaborateur Entité Affaire
Collab 1 Entité1
080909 - 18038
Collab 1 Entité1
080827 - 17840
Collab 1 Entité1
080929 - 18411
Collab 2 Entité1
080909 - 18099
Collab 2 Entité1
080827 - 17832
Collab 2 Entité1
080929 - 18451
Collab 2 Entité1
080909 - 18032
Collab 3 Entité1
080827 - 17583
Collab 3 Entité2
080929 - 18872
Collab 3 Entité2
080827 - 17462
Collab 4 Entité3
080929 - 18932
Collab 4 Entité3
080909 - 18233
Collab 4 Entité3
080827 - 17444
Collab 4 Entité3
080929 - 18873

Maintenant on me demande faire apparaître même les collaboteurs qui n'ont
pas saisi d'affaire.

Collaborateur Entité Affaire
Collab 1 Entité1
080909 - 18038
Collab 1 Entité1
080827 - 17840
Collab 1 Entité1
080929 - 18411
Collab 2 Entité1
080909 - 18099
Collab 2 Entité1
080929 - 18451
Collab 2 Entité1
080909 - 18032
Collab 3 Entité2
080929 - 18872
Collab 3 Entité2
080827 - 17462
Collab 4 Entité3
080929 - 18932
Collab 4 Entité3
080909 - 18233
Collab 4 Entité3
080827 - 17444
Collab 5 Entité3 NULL
Collab 6 Entité3 NULL
Collab 7 Entité3 NULL
Collab 8 Entité3 NULL
Collab 9 Entité3 NULL

Comment fait-on pour faire apparaître les lignes NULL
Après je souhaite les compter : je fais dans SSRS :

Collaborateur Entité Nom
d'Affaires
Collab 1 Entité1 3
Collab 2 Entité1 3
Collab 3 Entité2 2
Collab 4 Entité3 3
Collab 5 Entité3 0
Collab 6 Entité3 0
Collab 7 Entité3 0
Collab 8 Entité3 0
Collab 9 Entité3 0
Collab 10 Entité4 9

Merci de aide précieuse....
Hervé






--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
*********************** http://www.sqlspot.com *************************
Itsejoke
Le #17502741
Bonjour Frédéric,

Je voudrais faire apparaître les lignes de collaborateurs (comme un COUNT et
non un SUM) mêmes lignes avec valeurs NULL
Si je compte 3 lignes, j'aurais bien 3 lignes, non ?

Or j'ai fait des jointures naturelles donc j'ai exactement 1 collborateur =
1 affaire (plusieurs fois s'il a créé plusieurs affaires)

Merci de votre aide
Hervé

"Fred BROUARD"
Compter du NULL vous donnera toujours zéro. SI dans mon porte monaie je
n'ais ni pièce ni monnaie, quel montant puis-je payer ? ZERO !

Votre demande n'est donc pas calire du tout. Je crois que même vous, vous
ne comprenez pas ce que vous faites. Ou alors vous vous exprimez mal.

A +


Itsejoke a écrit :
Bonjour à tous,

J'aurais d'aide pour construire une requête, étant débutant ...:-) pas
facile...

Pour de la CRM, j'aurais besoin de sortir, tous les IC, par entité, qui
ont rentré au mois une Affaire...(même ceux qui ont rentré...)

J'ai trois tables à joindre, T1, T2, T3 :
T1 = USER
T2 = Collaborateur pour ENTITE
T3 = AFFAIRE

1 ENTITE a n USERS
1 USER a n AFFAIRES
1 ENTITE a n AFFAIRES


SELECT USER.NomUser as Collaborateur, Collaborateur.NomEntite AS
Entité, Affaire.NomAffaire as Affaire
FROM USER INNER JOIN
EVENT_10 ON USER.NomUser = Collaborateur.NomPrenom
INNER JOIN
EVENT ON USER.IdUser = Affaire.Appartient

ORDER BY NomUser

Donc là j'arrive à sortir les users qui ont fait au moins une affaire :

Collaborateur Entité
Affaire
Collab 1 Entité1 080909 - 18038
Collab 1 Entité1 080827 - 17840
Collab 1 Entité1 080929 - 18411
Collab 2 Entité1 080909 - 18099
Collab 2 Entité1 080827 - 17832
Collab 2 Entité1 080929 - 18451
Collab 2 Entité1 080909 - 18032
Collab 3 Entité1 080827 - 17583
Collab 3 Entité2 080929 - 18872
Collab 3 Entité2 080827 - 17462
Collab 4 Entité3 080929 - 18932
Collab 4 Entité3 080909 - 18233
Collab 4 Entité3 080827 - 17444
Collab 4 Entité3 080929 - 18873

Maintenant on me demande faire apparaître même les collaboteurs qui n'ont
pas saisi d'affaire.

Collaborateur Entité
Affaire
Collab 1 Entité1 080909 - 18038
Collab 1 Entité1 080827 - 17840
Collab 1 Entité1 080929 - 18411
Collab 2 Entité1 080909 - 18099
Collab 2 Entité1 080929 - 18451
Collab 2 Entité1 080909 - 18032
Collab 3 Entité2 080929 - 18872
Collab 3 Entité2 080827 - 17462
Collab 4 Entité3 080929 - 18932
Collab 4 Entité3 080909 - 18233
Collab 4 Entité3 080827 - 17444
Collab 5 Entité3
NULL
Collab 6 Entité3
NULL
Collab 7 Entité3
NULL
Collab 8 Entité3
NULL
Collab 9 Entité3
NULL

Comment fait-on pour faire apparaître les lignes NULL
Après je souhaite les compter : je fais dans SSRS :

Collaborateur Entité Nom
d'Affaires
Collab 1 Entité1 3
Collab 2 Entité1 3
Collab 3 Entité2 2
Collab 4 Entité3 3
Collab 5 Entité3 0
Collab 6 Entité3 0
Collab 7 Entité3 0
Collab 8 Entité3 0
Collab 9 Entité3 0
Collab 10 Entité4 9

Merci de aide précieuse....
Hervé




--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
*********************** http://www.sqlspot.com *************************


Sylvain Lafontaine
Le #17507181
Vous devez utiliser un Left Join. Cependant, il m'est impossible de vous
dire si vous devez appliquer ce joint entre vos tables 1 et 2 ou entre 2 et
3 car vous n'utiliser pas les mêmes noms de table dans votre clause Select.
En fait, je crois même que vous utilisez des vues (views) dans votre exemple
de Select. C'est pas facile de suivre votre code quand vous parlez d'abord
de T2, puis de Event_10 et finalement de Collaborateur pour désigner la même
chose.

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: sylvain aei ca (fill the blanks, no spam please)


"Itsejoke" news:%
Bonjour à tous,

J'aurais d'aide pour construire une requête, étant débutant ...:-) pas
facile...

Pour de la CRM, j'aurais besoin de sortir, tous les IC, par entité, qui
ont rentré au mois une Affaire...(même ceux qui ont rentré...)

J'ai trois tables à joindre, T1, T2, T3 :
T1 = USER
T2 = Collaborateur pour ENTITE
T3 = AFFAIRE

1 ENTITE a n USERS
1 USER a n AFFAIRES
1 ENTITE a n AFFAIRES


SELECT USER.NomUser as Collaborateur, Collaborateur.NomEntite AS
Entité, Affaire.NomAffaire as Affaire
FROM USER INNER JOIN
EVENT_10 ON USER.NomUser = Collaborateur.NomPrenom
INNER JOIN
EVENT ON USER.IdUser = Affaire.Appartient

ORDER BY NomUser

Donc là j'arrive à sortir les users qui ont fait au moins une affaire :

Collaborateur Entité
Affaire
Collab 1 Entité1 080909 - 18038
Collab 1 Entité1 080827 - 17840
Collab 1 Entité1 080929 - 18411
Collab 2 Entité1 080909 - 18099
Collab 2 Entité1 080827 - 17832
Collab 2 Entité1 080929 - 18451
Collab 2 Entité1 080909 - 18032
Collab 3 Entité1 080827 - 17583
Collab 3 Entité2 080929 - 18872
Collab 3 Entité2 080827 - 17462
Collab 4 Entité3 080929 - 18932
Collab 4 Entité3 080909 - 18233
Collab 4 Entité3 080827 - 17444
Collab 4 Entité3 080929 - 18873

Maintenant on me demande faire apparaître même les collaboteurs qui n'ont
pas saisi d'affaire.

Collaborateur Entité
Affaire
Collab 1 Entité1 080909 - 18038
Collab 1 Entité1 080827 - 17840
Collab 1 Entité1 080929 - 18411
Collab 2 Entité1 080909 - 18099
Collab 2 Entité1 080929 - 18451
Collab 2 Entité1 080909 - 18032
Collab 3 Entité2 080929 - 18872
Collab 3 Entité2 080827 - 17462
Collab 4 Entité3 080929 - 18932
Collab 4 Entité3 080909 - 18233
Collab 4 Entité3 080827 - 17444
Collab 5 Entité3
NULL
Collab 6 Entité3
NULL
Collab 7 Entité3
NULL
Collab 8 Entité3
NULL
Collab 9 Entité3
NULL

Comment fait-on pour faire apparaître les lignes NULL
Après je souhaite les compter : je fais dans SSRS :

Collaborateur Entité Nom
d'Affaires
Collab 1 Entité1 3
Collab 2 Entité1 3
Collab 3 Entité2 2
Collab 4 Entité3 3
Collab 5 Entité3 0
Collab 6 Entité3 0
Collab 7 Entité3 0
Collab 8 Entité3 0
Collab 9 Entité3 0
Collab 10 Entité4 9

Merci de aide précieuse....
Hervé



Itsejoke
Le #17507331
Bonsoir Sylvain,

Oui en effet ce n'est pas clair et je vous en remercie quand même d'essayer
de m'aider :-)

3 tables : USER, ENTITE, AFFAIRE
Un USER appartient à une ENTITE et crée des AFFAIRES
Mais comment faire apparaître toutes les lignes des USERS même s'ils n'ont
pas crée d'affaires ?

SELECT USER.NomUser, ENTITE.NomEntite, AFFAIRE.NomAffaire

FROM USER INNER JOIN ENTITE ON USER.NomUser = ENTITE.NomPrenom
INNER JOIN AFFAIRE ON USER.IdUser = Affaire.Appartient


Jointure à gauche pour vous ?
Merci de votre aide.
Hervé



"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)> a
écrit dans le message de news:
Vous devez utiliser un Left Join. Cependant, il m'est impossible de vous
dire si vous devez appliquer ce joint entre vos tables 1 et 2 ou entre 2
et 3 car vous n'utiliser pas les mêmes noms de table dans votre clause
Select. En fait, je crois même que vous utilisez des vues (views) dans
votre exemple de Select. C'est pas facile de suivre votre code quand vous
parlez d'abord de T2, puis de Event_10 et finalement de Collaborateur pour
désigner la même chose.

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: sylvain aei ca (fill the blanks, no spam please)


"Itsejoke" news:%
Bonjour à tous,

J'aurais d'aide pour construire une requête, étant débutant ...:-) pas
facile...

Pour de la CRM, j'aurais besoin de sortir, tous les IC, par entité, qui
ont rentré au mois une Affaire...(même ceux qui ont rentré...)

J'ai trois tables à joindre, T1, T2, T3 :
T1 = USER
T2 = Collaborateur pour ENTITE
T3 = AFFAIRE

1 ENTITE a n USERS
1 USER a n AFFAIRES
1 ENTITE a n AFFAIRES


SELECT USER.NomUser as Collaborateur, Collaborateur.NomEntite AS
Entité, Affaire.NomAffaire as Affaire
FROM USER INNER JOIN
EVENT_10 ON USER.NomUser = Collaborateur.NomPrenom
INNER JOIN
EVENT ON USER.IdUser = Affaire.Appartient

ORDER BY NomUser

Donc là j'arrive à sortir les users qui ont fait au moins une affaire :

Collaborateur Entité Affaire
Collab 1 Entité1 080909 - 18038
Collab 1 Entité1 080827 - 17840
Collab 1 Entité1 080929 - 18411
Collab 2 Entité1 080909 - 18099
Collab 2 Entité1 080827 - 17832
Collab 2 Entité1 080929 - 18451
Collab 2 Entité1 080909 - 18032
Collab 3 Entité1 080827 - 17583
Collab 3 Entité2 080929 - 18872
Collab 3 Entité2 080827 - 17462
Collab 4 Entité3 080929 - 18932
Collab 4 Entité3 080909 - 18233
Collab 4 Entité3 080827 - 17444
Collab 4 Entité3 080929 - 18873

Maintenant on me demande faire apparaître même les collaboteurs qui n'ont
pas saisi d'affaire.

Collaborateur Entité Affaire
Collab 1 Entité1 080909 - 18038
Collab 1 Entité1 080827 - 17840
Collab 1 Entité1 080929 - 18411
Collab 2 Entité1 080909 - 18099
Collab 2 Entité1 080929 - 18451
Collab 2 Entité1 080909 - 18032
Collab 3 Entité2 080929 - 18872
Collab 3 Entité2 080827 - 17462
Collab 4 Entité3 080929 - 18932
Collab 4 Entité3 080909 - 18233
Collab 4 Entité3 080827 - 17444
Collab 5 Entité3 NULL
Collab 6 Entité3 NULL
Collab 7 Entité3 NULL
Collab 8 Entité3 NULL
Collab 9 Entité3 NULL

Comment fait-on pour faire apparaître les lignes NULL
Après je souhaite les compter : je fais dans SSRS :

Collaborateur Entité Nom
d'Affaires
Collab 1 Entité1 3
Collab 2 Entité1 3
Collab 3 Entité2 2
Collab 4 Entité3 3
Collab 5 Entité3 0
Collab 6 Entité3 0
Collab 7 Entité3 0
Collab 8 Entité3 0
Collab 9 Entité3 0
Collab 10 Entité4 9

Merci de aide précieuse....
Hervé







Sylvain Lafontaine
Le #17507741
En décrivant vos tables, vous devriez toujours aller du plus général au plus
spécifique. Si User appartient à Entite, vous devriez alors écrire: Entite,
User, Affaire; ce qui donne:

SELECT User.NomUser, Entite.NomEntite, Affaire.NomAffaire

FROM Entite inner join User on User.NomUser = Entite.NomPrenom
Left Join Affaire ON Affaire.Appartient = User.IdUser


Cependant, cette relation n'est pas tellement logique car vous utilisez les
termes User.NomUser et Entite.NomPrenom pour décrire la relation entre les
tables User et Entite. Idem pour la relation entre Affaire et User.
Probablement que vous voulez écrire quelque chose comme:

SELECT User.NomUser, Entite.NomEntite, Affaire.NomAffaire

FROM Entite inner join User on User.IdEntite = Entite.IdEntite
Left Join Affaire on Affaire.IdUser = User.IdUser


et finalement, en utilisant les alias:

SELECT U.NomUser, E.NomEntite, A.NomAffaire

FROM Entite as E inner join User as U on U.IdEntite = E.IdEntite
Left Join Affaire A on A.IdUser = U.IdUser

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: sylvain aei ca (fill the blanks, no spam please)


"Itsejoke" news:
Bonsoir Sylvain,

Oui en effet ce n'est pas clair et je vous en remercie quand même
d'essayer de m'aider :-)

3 tables : USER, ENTITE, AFFAIRE
Un USER appartient à une ENTITE et crée des AFFAIRES
Mais comment faire apparaître toutes les lignes des USERS même s'ils n'ont
pas crée d'affaires ?

SELECT USER.NomUser, ENTITE.NomEntite, AFFAIRE.NomAffaire

FROM USER INNER JOIN ENTITE ON USER.NomUser = ENTITE.NomPrenom
INNER JOIN AFFAIRE ON USER.IdUser = Affaire.Appartient


Jointure à gauche pour vous ?
Merci de votre aide.
Hervé



"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)> a
écrit dans le message de news:
Vous devez utiliser un Left Join. Cependant, il m'est impossible de vous
dire si vous devez appliquer ce joint entre vos tables 1 et 2 ou entre 2
et 3 car vous n'utiliser pas les mêmes noms de table dans votre clause
Select. En fait, je crois même que vous utilisez des vues (views) dans
votre exemple de Select. C'est pas facile de suivre votre code quand
vous parlez d'abord de T2, puis de Event_10 et finalement de
Collaborateur pour désigner la même chose.

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: sylvain aei ca (fill the blanks, no spam please)


"Itsejoke" news:%
Bonjour à tous,

J'aurais d'aide pour construire une requête, étant débutant ...:-) pas
facile...

Pour de la CRM, j'aurais besoin de sortir, tous les IC, par entité, qui
ont rentré au mois une Affaire...(même ceux qui ont rentré...)

J'ai trois tables à joindre, T1, T2, T3 :
T1 = USER
T2 = Collaborateur pour ENTITE
T3 = AFFAIRE

1 ENTITE a n USERS
1 USER a n AFFAIRES
1 ENTITE a n AFFAIRES


SELECT USER.NomUser as Collaborateur, Collaborateur.NomEntite AS
Entité, Affaire.NomAffaire as Affaire
FROM USER INNER JOIN
EVENT_10 ON USER.NomUser = Collaborateur.NomPrenom
INNER JOIN
EVENT ON USER.IdUser = Affaire.Appartient

ORDER BY NomUser

Donc là j'arrive à sortir les users qui ont fait au moins une affaire :

Collaborateur Entité Affaire
Collab 1 Entité1 080909 - 18038
Collab 1 Entité1 080827 - 17840
Collab 1 Entité1 080929 - 18411
Collab 2 Entité1 080909 - 18099
Collab 2 Entité1 080827 - 17832
Collab 2 Entité1 080929 - 18451
Collab 2 Entité1 080909 - 18032
Collab 3 Entité1 080827 - 17583
Collab 3 Entité2 080929 - 18872
Collab 3 Entité2 080827 - 17462
Collab 4 Entité3 080929 - 18932
Collab 4 Entité3 080909 - 18233
Collab 4 Entité3 080827 - 17444
Collab 4 Entité3 080929 - 18873

Maintenant on me demande faire apparaître même les collaboteurs qui
n'ont pas saisi d'affaire.

Collaborateur Entité Affaire
Collab 1 Entité1 080909 - 18038
Collab 1 Entité1 080827 - 17840
Collab 1 Entité1 080929 - 18411
Collab 2 Entité1 080909 - 18099
Collab 2 Entité1 080929 - 18451
Collab 2 Entité1 080909 - 18032
Collab 3 Entité2 080929 - 18872
Collab 3 Entité2 080827 - 17462
Collab 4 Entité3 080929 - 18932
Collab 4 Entité3 080909 - 18233
Collab 4 Entité3 080827 - 17444
Collab 5 Entité3 NULL
Collab 6 Entité3 NULL
Collab 7 Entité3 NULL
Collab 8 Entité3 NULL
Collab 9 Entité3 NULL

Comment fait-on pour faire apparaître les lignes NULL
Après je souhaite les compter : je fais dans SSRS :

Collaborateur Entité Nom
d'Affaires
Collab 1 Entité1 3
Collab 2 Entité1 3
Collab 3 Entité2 2
Collab 4 Entité3 3
Collab 5 Entité3 0
Collab 6 Entité3 0
Collab 7 Entité3 0
Collab 8 Entité3 0
Collab 9 Entité3 0
Collab 10 Entité4 9

Merci de aide précieuse....
Hervé











Itsejoke
Le #17507791
Sylvain,
Une fois encore merci pour vos précieux conseils.

Bonne soirée.
Hervé

"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)> a
écrit dans le message de news:
En décrivant vos tables, vous devriez toujours aller du plus général au
plus spécifique. Si User appartient à Entite, vous devriez alors écrire:
Entite, User, Affaire; ce qui donne:

SELECT User.NomUser, Entite.NomEntite, Affaire.NomAffaire

FROM Entite inner join User on User.NomUser = Entite.NomPrenom
Left Join Affaire ON Affaire.Appartient = User.IdUser


Cependant, cette relation n'est pas tellement logique car vous utilisez
les termes User.NomUser et Entite.NomPrenom pour décrire la relation entre
les tables User et Entite. Idem pour la relation entre Affaire et User.
Probablement que vous voulez écrire quelque chose comme:

SELECT User.NomUser, Entite.NomEntite, Affaire.NomAffaire

FROM Entite inner join User on User.IdEntite = Entite.IdEntite
Left Join Affaire on Affaire.IdUser = User.IdUser


et finalement, en utilisant les alias:

SELECT U.NomUser, E.NomEntite, A.NomAffaire

FROM Entite as E inner join User as U on U.IdEntite = E.IdEntite
Left Join Affaire A on A.IdUser = U.IdUser

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: sylvain aei ca (fill the blanks, no spam please)


"Itsejoke" news:
Bonsoir Sylvain,

Oui en effet ce n'est pas clair et je vous en remercie quand même
d'essayer de m'aider :-)

3 tables : USER, ENTITE, AFFAIRE
Un USER appartient à une ENTITE et crée des AFFAIRES
Mais comment faire apparaître toutes les lignes des USERS même s'ils
n'ont pas crée d'affaires ?

SELECT USER.NomUser, ENTITE.NomEntite, AFFAIRE.NomAffaire

FROM USER INNER JOIN ENTITE ON USER.NomUser = ENTITE.NomPrenom
INNER JOIN AFFAIRE ON USER.IdUser = Affaire.Appartient


Jointure à gauche pour vous ?
Merci de votre aide.
Hervé



"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)> a
écrit dans le message de news:
Vous devez utiliser un Left Join. Cependant, il m'est impossible de
vous dire si vous devez appliquer ce joint entre vos tables 1 et 2 ou
entre 2 et 3 car vous n'utiliser pas les mêmes noms de table dans votre
clause Select. En fait, je crois même que vous utilisez des vues (views)
dans votre exemple de Select. C'est pas facile de suivre votre code
quand vous parlez d'abord de T2, puis de Event_10 et finalement de
Collaborateur pour désigner la même chose.

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: sylvain aei ca (fill the blanks, no spam please)


"Itsejoke" news:%
Bonjour à tous,

J'aurais d'aide pour construire une requête, étant débutant ...:-) pas
facile...

Pour de la CRM, j'aurais besoin de sortir, tous les IC, par entité, qui
ont rentré au mois une Affaire...(même ceux qui ont rentré...)

J'ai trois tables à joindre, T1, T2, T3 :
T1 = USER
T2 = Collaborateur pour ENTITE
T3 = AFFAIRE

1 ENTITE a n USERS
1 USER a n AFFAIRES
1 ENTITE a n AFFAIRES


SELECT USER.NomUser as Collaborateur, Collaborateur.NomEntite AS
Entité, Affaire.NomAffaire as Affaire
FROM USER INNER JOIN
EVENT_10 ON USER.NomUser = Collaborateur.NomPrenom
INNER JOIN
EVENT ON USER.IdUser = Affaire.Appartient

ORDER BY NomUser

Donc là j'arrive à sortir les users qui ont fait au moins une affaire :

Collaborateur Entité Affaire
Collab 1 Entité1 080909 - 18038
Collab 1 Entité1 080827 - 17840
Collab 1 Entité1 080929 - 18411
Collab 2 Entité1 080909 - 18099
Collab 2 Entité1 080827 - 17832
Collab 2 Entité1 080929 - 18451
Collab 2 Entité1 080909 - 18032
Collab 3 Entité1 080827 - 17583
Collab 3 Entité2 080929 - 18872
Collab 3 Entité2 080827 - 17462
Collab 4 Entité3 080929 - 18932
Collab 4 Entité3 080909 - 18233
Collab 4 Entité3 080827 - 17444
Collab 4 Entité3 080929 - 18873

Maintenant on me demande faire apparaître même les collaboteurs qui
n'ont pas saisi d'affaire.

Collaborateur Entité Affaire
Collab 1 Entité1 080909 - 18038
Collab 1 Entité1 080827 - 17840
Collab 1 Entité1 080929 - 18411
Collab 2 Entité1 080909 - 18099
Collab 2 Entité1 080929 - 18451
Collab 2 Entité1 080909 - 18032
Collab 3 Entité2 080929 - 18872
Collab 3 Entité2 080827 - 17462
Collab 4 Entité3 080929 - 18932
Collab 4 Entité3 080909 - 18233
Collab 4 Entité3 080827 - 17444
Collab 5 Entité3 NULL
Collab 6 Entité3 NULL
Collab 7 Entité3 NULL
Collab 8 Entité3 NULL
Collab 9 Entité3 NULL

Comment fait-on pour faire apparaître les lignes NULL
Après je souhaite les compter : je fais dans SSRS :

Collaborateur Entité
Nom d'Affaires
Collab 1 Entité1
3
Collab 2 Entité1
3
Collab 3 Entité2
2
Collab 4 Entité3
3
Collab 5 Entité3
0
Collab 6 Entité3
0
Collab 7 Entité3
0
Collab 8 Entité3
0
Collab 9 Entité3
0
Collab 10 Entité4 9

Merci de aide précieuse....
Hervé















Publicité
Poster une réponse
Anonyme