Probleme avec SELECT COUNT & requête avec UNION
MissOleana
Messages postés
4
Statut
Membre
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour, je désire faire un SELECT COUNT sur une requête avec UNION
SELECT Expediteur, time, id FROM amis WHERE Destinataire= '$utilisateur' UNION SELECT Destinataire, time, id FROM amis WHERE Expediteur= '$utilisateur' order by time limit
J'ai essayé cela mais cela ne me remonte pas le résultat auditionné des deux count .
SELECT Expediteur, time, id, COUNT(*) FROM amis WHERE Destinataire= '$utilisateur' UNION SELECT Destinataire, time, id, COUNT(*) FROM amis WHERE Expediteur= '$utilisateur' order by time limit
help, je bug !
SELECT Expediteur, time, id FROM amis WHERE Destinataire= '$utilisateur' UNION SELECT Destinataire, time, id FROM amis WHERE Expediteur= '$utilisateur' order by time limit
J'ai essayé cela mais cela ne me remonte pas le résultat auditionné des deux count .
SELECT Expediteur, time, id, COUNT(*) FROM amis WHERE Destinataire= '$utilisateur' UNION SELECT Destinataire, time, id, COUNT(*) FROM amis WHERE Expediteur= '$utilisateur' order by time limit
help, je bug !
A voir également:
- Probleme avec SELECT COUNT & requête avec UNION
- Trait d'union insécable word - Guide
- Please select boot device - Forum Matériel & Système
- French union avis - Forum Consommation & Internet
- S'envoyer de l'argent a soi meme western union - Forum Vos droits sur internet
- &Quot;Please select a boot device " ? ??? - Forum Windows
1 réponse
salut,
Je ne sais plus si c'est obligatoire, mais il vaut mieux rajouter un alias sur le count de la première partie (inutile ensuite).
ensuite, que veux tu faire? Si l'idée est de récupérer la somme des message envoyé et recus d'une personne, l'union n'est pas, de mon point de vue, le plus adapté : j'utiliserai un join :
Mais ca ne fonctionnera pas dans le sens où :
- tu ne regroupe pas tes résultats avec un group by
- si time représente une heure, on ne devrait pas retrouver de combinaison "user+id+time" identique.
Il faudrai un peu plus d'explication sur le rôle de la requête (que résultats voudrais-tu? à partir de quoi?) pour t'aider plus précisément.
naga
SELECT Expediteur, time, id, COUNT(*) as tot
FROM amis
WHERE Destinataire= '$utilisateur'
UNION
SELECT Destinataire, time, id, COUNT(*)
FROM amis
WHERE Expediteur= '$utilisateur'
order by time limit
Je ne sais plus si c'est obligatoire, mais il vaut mieux rajouter un alias sur le count de la première partie (inutile ensuite).
ensuite, que veux tu faire? Si l'idée est de récupérer la somme des message envoyé et recus d'une personne, l'union n'est pas, de mon point de vue, le plus adapté : j'utiliserai un join :
select a1.user,a1.time ,a1.id, (a1.tot + a2.tot) as total
from (select Expediteur as user, time, id, COUNT(*) as tot
from amis a1
where a1.Destinataire= '$utilisateur')as subAmis1
join (select Destinataire as user, time, id, COUNT(*) as tot
from amis a2
where a2.Expediteur= '$utilisateur')as subAmis2 on a1.user = a2.user and a1.time = a2.time and a1.id=a2.id;
Mais ca ne fonctionnera pas dans le sens où :
- tu ne regroupe pas tes résultats avec un group by
- si time représente une heure, on ne devrait pas retrouver de combinaison "user+id+time" identique.
Il faudrai un peu plus d'explication sur le rôle de la requête (que résultats voudrais-tu? à partir de quoi?) pour t'aider plus précisément.
naga