Count

Le
Fred
Bonjour,
J'ai essayé d'introduire un count dans ma requête mais j'obtiens chaque fois
une erreur. J'ai essayé avec des group by.
J'aimerais savoir combien de machines ont le software installé
(count(value))
Qqun pourrait m'éclairer ? Voici le query en question :

select c.computer_name, cl.value
from computer_lists cl
inner join computer c
on c.computer_id = cl.computer_id
where cl.list_type='Software'
order by cl.value

Merci d'avance !
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
OlivierH
Le #19999651
Tu fais comme ca :


select count(*)
from computer_lists cl
inner join computer c
on c.computer_id = cl.computer_id
where cl.list_type='Software'
order by cl.value


Olivier,

Fred a écrit :
Bonjour,
J'ai essayé d'introduire un count dans ma requête mais j'obtiens chaque fois
une erreur. J'ai essayé avec des group by.
J'aimerais savoir combien de machines ont le software installé
(count(value))...
Qqun pourrait m'éclairer ? Voici le query en question :

select c.computer_name, cl.value
from computer_lists cl
inner join computer c
on c.computer_id = cl.computer_id
where cl.list_type='Software'
order by cl.value

Merci d'avance !







TedIF
Le #19999911
OlivierH avait énoncé :
Tu fais comme ca :


select count(*)
from computer_lists cl
inner join computer c
on c.computer_id = cl.computer_id
where cl.list_type='Software'
order by cl.value


Olivier,

Fred a écrit :
Bonjour,
J'ai essayé d'introduire un count dans ma requête mais j'obtiens chaque
fois une erreur. J'ai essayé avec des group by.
J'aimerais savoir combien de machines ont le software installé
(count(value))...
Qqun pourrait m'éclairer ? Voici le query en question :

select c.computer_name, cl.value
from computer_lists cl
inner join computer c
on c.computer_id = cl.computer_id
where cl.list_type='Software'
order by cl.value

Merci d'avance !










en supprimant l'order by bien sûr

--

Dominique
OlivierH
Le #20000041
Oui tout à fait,
car cela ne sert à rien.

olivier,


TedIF a écrit :
OlivierH avait énoncé :
Tu fais comme ca :


select count(*)
from computer_lists cl
inner join computer c
on c.computer_id = cl.computer_id
where cl.list_type='Software'
order by cl.value


Olivier,

Fred a écrit :
Bonjour,
J'ai essayé d'introduire un count dans ma requête mais j'obtiens
chaque fois une erreur. J'ai essayé avec des group by.
J'aimerais savoir combien de machines ont le software installé
(count(value))...
Qqun pourrait m'éclairer ? Voici le query en question :

select c.computer_name, cl.value
from computer_lists cl
inner join computer c
on c.computer_id = cl.computer_id
where cl.list_type='Software'
order by cl.value

Merci d'avance !










en supprimant l'order by bien sûr



Fred
Le #20051191
Bonjour,
Je ne vois pas ce qu'il y a de différent dans vos 2 réponses ?

J'ai également besoin de voir apparaître le nom de la machine dand le
résultat.

Quoi qu'il en soit, j'ai tjs la même erreur :
Column "computer_lists.value" is invalid in the ORDER BY clause because it
is not contained in either an aggregate function or the GROUP BY clause.

D'avance merci,

"OlivierH" <"nospam[contact]" a écrit :

Oui tout à fait,
car cela ne sert à rien.

olivier,


TedIF a écrit :
> OlivierH avait énoncé :
>> Tu fais comme ca :
>>
>>
>> select count(*)
>> from computer_lists cl
>> inner join computer c
>> on c.computer_id = cl.computer_id
>> where cl.list_type='Software'
>> order by cl.value
>>
>>
>> Olivier,
>>
>> Fred a écrit :
>>> Bonjour,
>>> J'ai essayé d'introduire un count dans ma requête mais j'obtiens
>>> chaque fois une erreur. J'ai essayé avec des group by.
>>> J'aimerais savoir combien de machines ont le software installé
>>> (count(value))...
>>> Qqun pourrait m'éclairer ? Voici le query en question :
>>>
>>> select c.computer_name, cl.value
>>> from computer_lists cl
>>> inner join computer c
>>> on c.computer_id = cl.computer_id
>>> where cl.list_type='Software'
>>> order by cl.value
>>>
>>> Merci d'avance !
>>>
>>>
>>>
>>>
>>>
>
> en supprimant l'order by bien sûr
>



OlivierH
Le #20051801
Bonjour,

Il faut que tu enleves le order by,

select c.computer_name, count(*) as NbOrdi
from computer_lists cl
inner join computer c
on c.computer_id = cl.computer_id
where cl.list_type='Software'
Group By computer_name

olivier




Fred a écrit :
Bonjour,
Je ne vois pas ce qu'il y a de différent dans vos 2 réponses ?

J'ai également besoin de voir apparaître le nom de la machine dand le
résultat.

Quoi qu'il en soit, j'ai tjs la même erreur :
Column "computer_lists.value" is invalid in the ORDER BY clause because it
is not contained in either an aggregate function or the GROUP BY clause.

D'avance merci,

"OlivierH" <"nospam[contact]" a écrit :


Oui tout à fait,
car cela ne sert à rien.

olivier,


TedIF a écrit :

OlivierH avait énoncé :

Tu fais comme ca :


select count(*)
from computer_lists cl
inner join computer c
on c.computer_id = cl.computer_id
where cl.list_type='Software'
order by cl.value


Olivier,

Fred a écrit :

Bonjour,
J'ai essayé d'introduire un count dans ma requête mais j'obtiens
chaque fois une erreur. J'ai essayé avec des group by.
J'aimerais savoir combien de machines ont le software installé
(count(value))...
Qqun pourrait m'éclairer ? Voici le query en question :

select c.computer_name, cl.value
from computer_lists cl
inner join computer c
on c.computer_id = cl.computer_id
where cl.list_type='Software'
order by cl.value

Merci d'avance !










en supprimant l'order by bien sûr








Fred
Le #20110571
Ben non on y est toujours pas ... ds ce cas, la requête retourne le nom de la
machine et aussi un nombre qui atteint plusieurs centaines ...
Ce que je souhaite c'est qu'on groupe par software (cl.value) et qu'on me
donne le nom des machines sur lesquelles le soft est installé et aussi le
nombre de machines sur lesquelles il est installé.
Le query suivant me donne le nom de la machine et le nom du soft installé :
select c.computer_name, cl.value
from computer_lists cl
inner join computer c
on c.computer_id = cl.computer_id
where cl.list_type='Software'
and c.company = 1


Vous voyez ce que je veux dire ?

Merci d'avance,



"OlivierH" <"nospam[contact]" a écrit :

Bonjour,

Il faut que tu enleves le order by,

select c.computer_name, count(*) as NbOrdi
from computer_lists cl
inner join computer c
on c.computer_id = cl.computer_id
where cl.list_type='Software'
Group By computer_name

olivier




Fred a écrit :
> Bonjour,
> Je ne vois pas ce qu'il y a de différent dans vos 2 réponses ?
>
> J'ai également besoin de voir apparaître le nom de la machine dand le
> résultat.
>
> Quoi qu'il en soit, j'ai tjs la même erreur :
> Column "computer_lists.value" is invalid in the ORDER BY clause because it
> is not contained in either an aggregate function or the GROUP BY clause.
>
> D'avance merci,
>
> "OlivierH" <"nospam[contact]" a écrit :
>
>
>> Oui tout à fait,
>> car cela ne sert à rien.
>>
>> olivier,
>>
>>
>> TedIF a écrit :
>>
>>> OlivierH avait énoncé :
>>>
>>>> Tu fais comme ca :
>>>>
>>>>
>>>> select count(*)
>>>> from computer_lists cl
>>>> inner join computer c
>>>> on c.computer_id = cl.computer_id
>>>> where cl.list_type='Software'
>>>> order by cl.value
>>>>
>>>>
>>>> Olivier,
>>>>
>>>> Fred a écrit :
>>>>
>>>>> Bonjour,
>>>>> J'ai essayé d'introduire un count dans ma requête mais j'obtiens
>>>>> chaque fois une erreur. J'ai essayé avec des group by.
>>>>> J'aimerais savoir combien de machines ont le software installé
>>>>> (count(value))...
>>>>> Qqun pourrait m'éclairer ? Voici le query en question :
>>>>>
>>>>> select c.computer_name, cl.value
>>>>> from computer_lists cl
>>>>> inner join computer c
>>>>> on c.computer_id = cl.computer_id
>>>>> where cl.list_type='Software'
>>>>> order by cl.value
>>>>>
>>>>> Merci d'avance !
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>> en supprimant l'order by bien sûr
>>>
>>>



Patrice
Le #20113471
Bonjour,

Ben non on y est toujours pas ... ds ce cas, la requête retourne le nom de
la
machine et aussi un nombre qui atteint plusieurs centaines ...



Cela semble suspect. Elle doit retourner le nombre de soft par machine
(plusieurs centaines de soft par machine ???). La requête me semble
correcte. Vérifier par exemple si les données ne contiendrait pas *tous* les
inventaires réalisés (on aurait plusieurs fois un même couple computer_name,
value pour toutes les dates auxquelles ce logiciel a été identifié sur cet
ordinateur ???)

Ce que je souhaite c'est qu'on groupe par software (cl.value) et qu'on me
donne le nom des machines sur lesquelles le soft est installé et aussi le
nombre de machines sur lesquelles il est installé.



Cela donnerait donc par exemple (le plus simple je pense) :

select c.computer_name, cl.value,
-- Compter le nombre de machines ayant ce soft
(select count(distinct computer_name) from computer_lists where
value=cl.Value)
from computer_lists cl
inner join computer c
on c.computer_id = cl.computer_id
where cl.list_type='Software'
and c.company = 1

Une autre solution serait de faire les deux requêtes séparemment et de les
relier au final par un "join"...

A noter que :
- on ne regroupe pas par soft (si on regroupe on n'a qu'une seule ligne par
soft et on ne peut avoir la liste des machines concernées)
- on génère donc ici une colonne qui aura nécessaire la même valeur sur
toutes les lignes ayant la même value. Ce n'est pas forcément très
interessant de mettre dans la même requête des données qui correspondent à
des niveaux de détails différents. A voir selon l'usage...
- donc attention aux données qui sont peut-être un peu plus élaborées
(plusieurs couples identiques à des dates différentes ?)

--
Patrice
Fred
Le #20156521
Merci quand même ...

"Patrice" a écrit :

Bonjour,

> Ben non on y est toujours pas ... ds ce cas, la requête retourne le nom de
> la
> machine et aussi un nombre qui atteint plusieurs centaines ...

Cela semble suspect. Elle doit retourner le nombre de soft par machine
(plusieurs centaines de soft par machine ???). La requête me semble
correcte. Vérifier par exemple si les données ne contiendrait pas *tous* les
inventaires réalisés (on aurait plusieurs fois un même couple computer_name,
value pour toutes les dates auxquelles ce logiciel a été identifié sur cet
ordinateur ???)

> Ce que je souhaite c'est qu'on groupe par software (cl.value) et qu'on me
> donne le nom des machines sur lesquelles le soft est installé et aussi le
> nombre de machines sur lesquelles il est installé.

Cela donnerait donc par exemple (le plus simple je pense) :

select c.computer_name, cl.value,
-- Compter le nombre de machines ayant ce soft
(select count(distinct computer_name) from computer_lists where
value=cl.Value)
from computer_lists cl
inner join computer c
on c.computer_id = cl.computer_id
where cl.list_type='Software'
and c.company = 1

Une autre solution serait de faire les deux requêtes séparemment et de les
relier au final par un "join"...

A noter que :
- on ne regroupe pas par soft (si on regroupe on n'a qu'une seule ligne par
soft et on ne peut avoir la liste des machines concernées)
- on génère donc ici une colonne qui aura nécessaire la même valeur sur
toutes les lignes ayant la même value. Ce n'est pas forcément très
interessant de mettre dans la même requête des données qui correspondent à
des niveaux de détails différents. A voir selon l'usage...
- donc attention aux données qui sont peut-être un peu plus élaborées
(plusieurs couples identiques à des dates différentes ?)

--
Patrice






Publicité
Poster une réponse
Anonyme