Requete un peu complexe

Le
raleur
Bonjour à tous

J'ai une requête à faire et je m'arrache les cheveux depuis plusieurs jours.

J'ai 3 tables

Client Compte Connexion
Id_Client #Id_Client Date
Nom Id_Compte - #Id_Compte
Prénom .. .


Un client peut avoir plusieurs comptes. Et j'ai une table qui enregistre la derniere connexions pour
chaque compte.

J'aimerai pouvoir determiner tous les utilisateur n'ayant pas effectuer de connexion sur la totalité
de leur comptes. Par exemple si un utilisateur possede 3 comptes et qu'il ne s'est connecté que sur
2 de ses comptes, que ça me le retourne aussi. Mais que si il s'est connecté sur ses 3 comptes que
la requete ne me retourne pas cet utilisateur.

J'ai déjà cette requette qui me retourne tous les comptes sur lesquels il n'y a pas eu de connexion
à la date du jour.

SELECT Id_Compte
FROM Comptes
WHERE Id_Compte NOT IN (SELECT [#Id_Compte] FROM Connexions WHERE DateÚte());


Merci de m'aider
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
raleur
Le #11867521
Bonjour à tous

J'ai une requête à faire et je m'arrache les cheveux depuis plusieurs jours.

J'ai 3 tables

Client Compte Connexion
Id_Client ------------------ #Id_Client Date
Nom Id_Compte ----------------- #Id_Compte
Prénom ..... ....
...

Un client peut avoir plusieurs comptes. Et j'ai une table qui enregistre la derniere connexions pour
chaque compte.

J'aimerai pouvoir determiner tous les utilisateur n'ayant pas effectuer de connexion sur la totalité
de leur comptes. Par exemple si un utilisateur possede 3 comptes et qu'il ne s'est connecté que sur
2 de ses comptes, que ça me le retourne aussi. Mais que si il s'est connecté sur ses 3 comptes que
la requete ne me retourne pas cet utilisateur.

J'ai déjà cette requette qui me retourne tous les comptes sur lesquels il n'y a pas eu de connexion
à la date du jour.

SELECT Id_Compte
FROM Comptes
WHERE Id_Compte NOT IN (SELECT [#Id_Compte] FROM Connexions WHERE DateÚte());


Merci de m'aider
Philippe TROTIN [MS]
Le #11867461
Bonjour,

Quelque chose dans le genre ?

SELECT [#Id_Client], COUNT(*) AS NB_COMPTE_CONNECTE
FROM Compte c
INNER JOIN (SELECT [#Id_Client], COUNT(*) AS NB_COMPTE_TOTAL FROM Compte
GROUP BY [#Id_Client]) z ON c.[#Id_Client] = z.[#Id_Client] AND
c.NB_COMPTE_CONNECTE <> z.NB_COMPTE_TOTAL
WHERE c.Id_Compte IN (SELECT [#Id_Compte] FROM Connexions WHERE
DATEDIFF(day, cnx.Date, Getdate()) = 0)
GROUP BY c.[#Id_Client]


<<<
-- Liste des clients avec leurs compte
SELECT Id_Client, Nom, Prénom
FROM Client cli
INNER JOIN Compte c ON cli.Id_Client = c.[#Id_Client]

-- Liste des clients sans connexion à la date du jour
SELECT Id_Client, Nom, Prénom
FROM Client cli
INNER JOIN Comptes c ON cli.Id_Client = c.[#Id_Client]
WHERE Id_Compte NOT IN (SELECT [#Id_Compte] FROM Connexions WHERE
DATEDIFF(day, cnx.Date, Getdate()) = 0)

-- Nombre de compte par client connecté à la date du jour
SELECT [#Id_Client], COUNT(*) AS NB_COMPTE_CONNECTE
FROM Compte
WHERE Id_Compte IN (SELECT [#Id_Compte] FROM Connexions WHERE DATEDIFF(day,
cnx.Date, Getdate()) = 0)
GROUP BY [#Id_Client]

-- Nombre de compte total par client connecté à la date du jour
SELECT [#Id_Client], COUNT(*) AS NB_COMPTE_TOTAL FROM Compte GROUP BY
[#Id_Client]

-- La requete attendue
SELECT [#Id_Client], COUNT(*) AS NB_COMPTE_CONNECTE
FROM Compte c
INNER JOIN (SELECT [#Id_Client], COUNT(*) AS NB_COMPTE_TOTAL FROM Compte
GROUP BY [#Id_Client]) z ON c.[#Id_Client] = z.[#Id_Client] AND
c.NB_COMPTE_CONNECTE <> z.NB_COMPTE_TOTAL
WHERE Id_Compte IN (SELECT [#Id_Compte] FROM Connexions WHERE DATEDIFF(day,
cnx.Date, Getdate()) = 0)
GROUP BY [#Id_Client]









Cordialement
_______________________________

Philippe TROTIN
Microsoft Services France
_______________________________

"raleur" discussion : 4728476f$0$5069$
Bonjour à tous

J'ai une requête à faire et je m'arrache les cheveux depuis plusieurs
jours.

J'ai 3 tables

Client Compte
Connexion
Id_Client ------------------ #Id_Client Date
Nom Id_Compte -----------------
#Id_Compte
Prénom ..... ....
...

Un client peut avoir plusieurs comptes. Et j'ai une table qui enregistre
la derniere connexions pour chaque compte.

J'aimerai pouvoir determiner tous les utilisateur n'ayant pas effectuer de
connexion sur la totalité de leur comptes. Par exemple si un utilisateur
possede 3 comptes et qu'il ne s'est connecté que sur 2 de ses comptes, que
ça me le retourne aussi. Mais que si il s'est connecté sur ses 3 comptes
que la requete ne me retourne pas cet utilisateur.

J'ai déjà cette requette qui me retourne tous les comptes sur lesquels il
n'y a pas eu de connexion à la date du jour.

SELECT Id_Compte
FROM Comptes
WHERE Id_Compte NOT IN (SELECT [#Id_Compte] FROM Connexions WHERE
DateÚte());


Merci de m'aider


Publicité
Poster une réponse
Anonyme