Aide en SQL
Résolu
juloo6578
Messages postés
57
Statut
Membre
-
Reivax962 Messages postés 3742 Statut Membre -
Reivax962 Messages postés 3742 Statut Membre -
Bonjour,
Je souhaite effectuer un requête un peut particulière dont je ne trouve pas la solution
Les données sont enregistrées dans la table comme ceci :
La requête doit renvoyer le nombre d'occurrence d'une chaîne de caractères dans 'envoyeur' et le nombre d'occurrence de cette même chaîne de caractère dans receveur
Cette chaîne de caractère représenterais le nom de l'utilisateur.
exemple :
Je souhaite effectuer un requête un peut particulière dont je ne trouve pas la solution
Les données sont enregistrées dans la table comme ceci :
envoyeur receveur juloo6578 maxPain juloo6578 Hubert Hubert maxPain maxPain juloo6578 Hubert juloo6578 juloo6578 maxPain
La requête doit renvoyer le nombre d'occurrence d'une chaîne de caractères dans 'envoyeur' et le nombre d'occurrence de cette même chaîne de caractère dans receveur
Cette chaîne de caractère représenterais le nom de l'utilisateur.
exemple :
Utilisateur Envoyé Recu juloo6578 3 2 maxPain 1 3 Hubert 2 1
A voir également:
- Aide en SQL
- Logiciel sql - Télécharger - Bases de données
- Requete sql pix - Forum PHP
- Additions et multiplication dans des requêtes SQL ✓ - Forum MySQL
- Sql query download - Télécharger - Gestion de données
- Ora-00933: la commande sql ne se termine pas correctement ✓ - Forum Oracle
1 réponse
Bonjour,
En une seule requête obligatoirement ?
Dans ce cas, tu peux essayer ça :
Y a peut-être plus simple... Mais je n'ai rien sous la main pour tester.
Xavier
En une seule requête obligatoirement ?
Dans ce cas, tu peux essayer ça :
select t.nom, coalesce(envoyeur, 0) as envoyé, coalesce(receveur, 0) as reçu
from (
select distinct envoyeur as nom from table
union
select distinct receveur from table
) t
left outer join
(
select receveur, count(*) from table group by receveur
) rec ON rec.receveur = t.nom
left outer join
(
select envoyeur, count(*) from table group by envoyeur
) env ON env.envoyeur = t.nom
Y a peut-être plus simple... Mais je n'ai rien sous la main pour tester.
Xavier
Ceci devrait être mieux :
select t.nom, coalesce(env.nb, 0) as envoyé, coalesce(rec.nb, 0) as reçu from ( select distinct envoyeur as nom from table union select distinct receveur from table ) t left outer join ( select receveur, count(*) as nb from table group by receveur ) rec ON rec.receveur = t.nom left outer join ( select envoyeur, count(*) as nb from table group by envoyeur ) env ON env.envoyeur = t.nom