OVH Cloud OVH Cloud

Aide sur SQL

3 réponses
Avatar
geo75
Bonjour,

Je n'arrive pas a comprendre d'ou vient le probleme. Ca marche sur
MySQL mais pas sur SQL Server. C'est le GROUP BY qu'il n'aime pas.

[Error] Script lines: 1-12 -------------------------
Column 'Membership.CreatedDate' is invalid in the select list because
it is not contained in either an aggregate function or the GROUP BY
clause.

Ma requete:
SELECT
[Identification].[Name],
[Membership].[CreatedDate],
[Identification].[System Type]

FROM
[Identification] [Identification]
INNER JOIN [Membership] [Membership]
[Identification].[_ResourceGuid] = [Membership].[ResourceGuid]

GROUP BY
[Identification].[Name]

Merci pour toutes suggestions.

3 réponses

Avatar
Michaël
Le 11/07/2006 12:23, geo75 a écrit :
Je n'arrive pas a comprendre d'ou vient le probleme. Ca marche sur
MySQL mais pas sur SQL Server. C'est le GROUP BY qu'il n'aime pas.

[Error] Script lines: 1-12 -------------------------
Column 'Membership.CreatedDate' is invalid in the select list because
it is not contained in either an aggregate function or the GROUP BY
clause.



MySQL ignore ce type d'erreur de syntaxe sans en avertir l'utilisateur. Dans ce
select tout simple, il n'y a pas besoin de GROUP BY puisqu'il n'y a aucune
fonction d'agrégat (somme, comptage, moyenne, ...). SQL-Server est plus précis
sur la syntaxe et n'accepte pas les erreurs.

Cdt,
Michaël
Avatar
Stéphane CARPENTIER
geo75 a écrit :

[Error] Script lines: 1-12 -------------------------
Column 'Membership.CreatedDate' is invalid in the select list because
it is not contained in either an aggregate function or the GROUP BY
clause.

Ma requete:
SELECT
[Identification].[Name],
[Membership].[CreatedDate],
[Identification].[System Type]

GROUP BY
[Identification].[Name]



En fait, tu sélectionnes 3 champs et tu ne lui dis pas comment tu veux
regrouper 2 des 3 champs. Il ne sait pas quoi faire des valeurs. Donc,
pour [Membership].[CreatedDate] et [Identification].[System Type], soit
tu les rajoutes dans le group by, ce qui revient à sélectionner les lignes
distinctes. Soit tu utilises une fonction d'agrégat, par exemple, tu lui
dits de ne prendre que la date la plus récente et de compter le nombre de
types de systèmes.

--
Stéphane

Pour me répondre, traduire gratuit en anglais et virer le .invalid.
http://stef.carpentier.free.fr/
Avatar
geo75
Ca marche.
Merci

Stéphane CARPENTIER a écrit :

geo75 a écrit :

> [Error] Script lines: 1-12 -------------------------
> Column 'Membership.CreatedDate' is invalid in the select list because
> it is not contained in either an aggregate function or the GROUP BY
> clause.
>
> Ma requete:
> SELECT
> [Identification].[Name],
> [Membership].[CreatedDate],
> [Identification].[System Type]
>
> GROUP BY
> [Identification].[Name]

En fait, tu sélectionnes 3 champs et tu ne lui dis pas comment tu veux
regrouper 2 des 3 champs. Il ne sait pas quoi faire des valeurs. Donc,
pour [Membership].[CreatedDate] et [Identification].[System Type], soit
tu les rajoutes dans le group by, ce qui revient à sélectionner les l ignes
distinctes. Soit tu utilises une fonction d'agrégat, par exemple, tu lui
dits de ne prendre que la date la plus récente et de compter le nombre de
types de systèmes.

--
Stéphane

Pour me répondre, traduire gratuit en anglais et virer le .invalid.
http://stef.carpentier.free.fr/