Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Count

8 réponses
Avatar
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 !

8 réponses

Avatar
OlivierH
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 !







Avatar
TedIF
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
Avatar
OlivierH
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



Avatar
Fred
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
>



Avatar
OlivierH
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








Avatar
Fred
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
>>>
>>>



Avatar
Patrice
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
Avatar
Fred
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