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

SQL un peu trop difficile pour moi

6 réponses
Avatar
Serge Fournier
Bonjour tous,

Le but est de faire un sql qui va réordonner un groupe d'enregistrements
avec un tri portant sur un champ du record.

ex:
table :
MYTABLE
colonnes :
CodeFamille (int)
Ordre (int)
Critere (int)

le but est de modifier pour une famille (CodeFamille = 1) tous les champs
Ordre pour qu'ils reflete le tri sur "Critère".

avant le tri :
1, 1, ZZ
1, 2, RR
1, 3, BB

un tri sur critere donnerait :
1, 3, BB
1, 2, RR
1, 1, ZZ

mais le SQL fait :
1, 1, BB
1, 2, RR
1, 3, ZZ

J'espère être assez clair :-)

Merci pour toutes réponses

6 réponses

Avatar
Mat
"Serge Fournier" a écrit dans le message news:
uKeKLA$
Bonjour tous,

Le but est de faire un sql qui va réordonner un groupe d'enregistrements
avec un tri portant sur un champ du record.

ex:
table :
MYTABLE
colonnes :
CodeFamille (int)
Ordre (int)
Critere (int)

le but est de modifier pour une famille (CodeFamille = 1) tous les champs
Ordre pour qu'ils reflete le tri sur "Critère".

avant le tri :
1, 1, ZZ
1, 2, RR
1, 3, BB

un tri sur critere donnerait :
1, 3, BB
1, 2, RR
1, 1, ZZ

mais le SQL fait :
1, 1, BB
1, 2, RR
1, 3, ZZ

J'espère être assez clair :-)



Bonjour si j'ai bien compris vous souhaitez faire un tri décroissant, cela
se traduit par DESC en fin de clause order (DESCENDING)

J'espère avoir bien compris et vous avoir aidé

Mat


Merci pour toutes réponses




Avatar
Fred BROUARD
SELECT CodeFamille, Ordre, Critere
FROM MYTABLE
ORDER BY CodeFamille ASC, Ordre DESC


A +

Serge Fournier a écrit:
Bonjour tous,

Le but est de faire un sql qui va réordonner un groupe d'enregistrements
avec un tri portant sur un champ du record.

ex:
table :
MYTABLE
colonnes :
CodeFamille (int)
Ordre (int)
Critere (int)

le but est de modifier pour une famille (CodeFamille = 1) tous les champs
Ordre pour qu'ils reflete le tri sur "Critère".

avant le tri :
1, 1, ZZ
1, 2, RR
1, 3, BB

un tri sur critere donnerait :
1, 3, BB
1, 2, RR
1, 1, ZZ

mais le SQL fait :
1, 1, BB
1, 2, RR
1, 3, ZZ

J'espère être assez clair :-)

Merci pour toutes réponses





--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Avatar
Serge Fournier
C est vrai que j'ai pas été clair.
Ce que je veux en fait, c'est un UPDATE qui va re creer les valeurs de Ordre
en fonction du tri sur Critère.
Les SQL de vos réponse me renvoie en fait le jeux de resultat N°2 (tri sur
critere) et ce que je veux c'est le jeux n° 3.
(Remarquer le changement de valeur de Ordre)

Merci a tous;

"Serge Fournier" a écrit dans le message de
news:uKeKLA$
Bonjour tous,

Le but est de faire un sql qui va réordonner un groupe d'enregistrements
avec un tri portant sur un champ du record.

ex:
table :
MYTABLE
colonnes :
CodeFamille (int)
Ordre (int)
Critere (int)

le but est de modifier pour une famille (CodeFamille = 1) tous les champs
Ordre pour qu'ils reflete le tri sur "Critère".

avant le tri :
1, 1, ZZ
1, 2, RR
1, 3, BB

un tri sur critere donnerait :
1, 3, BB
1, 2, RR
1, 1, ZZ

mais le SQL fait :
1, 1, BB
1, 2, RR
1, 3, ZZ

J'espère être assez clair :-)

Merci pour toutes réponses




Avatar
Gilles LE BARBIER
Creer une table tempo en reprenant la structure de ta table à copier
(sans contrainte si tu en as sur la principal)

lit 2 fois ta table suivant les deux champ trie comme tu le souhaite

Enfin Supprime ta table principal et renommer ta table tempo

Pour un exemple de passage dans une table tempo tu peux regarder les script
généré par entreprise manager
Gilles un débutant


"Serge Fournier" a écrit dans le message de
news:%

C est vrai que j'ai pas été clair.
Ce que je veux en fait, c'est un UPDATE qui va re creer les valeurs de


Ordre
en fonction du tri sur Critère.
Les SQL de vos réponse me renvoie en fait le jeux de resultat N°2 (tri sur
critere) et ce que je veux c'est le jeux n° 3.
(Remarquer le changement de valeur de Ordre)

Merci a tous;

"Serge Fournier" a écrit dans le message de
news:uKeKLA$
> Bonjour tous,
>
> Le but est de faire un sql qui va réordonner un groupe d'enregistrements
> avec un tri portant sur un champ du record.
>
> ex:
> table :
> MYTABLE
> colonnes :
> CodeFamille (int)
> Ordre (int)
> Critere (int)
>
> le but est de modifier pour une famille (CodeFamille = 1) tous les


champs
> Ordre pour qu'ils reflete le tri sur "Critère".
>
> avant le tri :
> 1, 1, ZZ
> 1, 2, RR
> 1, 3, BB
>
> un tri sur critere donnerait :
> 1, 3, BB
> 1, 2, RR
> 1, 1, ZZ
>
> mais le SQL fait :
> 1, 1, BB
> 1, 2, RR
> 1, 3, ZZ
>
> J'espère être assez clair :-)
>
> Merci pour toutes réponses
>
>




Avatar
Synopsis
UPDATE MyTable Set
Ordre = (select count(*) from MyTable b where a.codeFamille=b.codeFamille
and b.Critere<=a.Critere)
from MyTable a


En imposant (a.codeFamille=b.codeFamille) dans la clause where
, je suppose que l'attribut Ordre est l'ordre dans la famille.

1, 1, BB
1, 2, RR
1, 3, ZZ
2, 1, AA
2, 2, GG
2, 3, MM


"Serge Fournier" a écrit dans le message de
news:uKeKLA$
Bonjour tous,

Le but est de faire un sql qui va réordonner un groupe d'enregistrements
avec un tri portant sur un champ du record.

ex:
table :
MYTABLE
colonnes :
CodeFamille (int)
Ordre (int)
Critere (int)

le but est de modifier pour une famille (CodeFamille = 1) tous les champs
Ordre pour qu'ils reflete le tri sur "Critère".

avant le tri :
1, 1, ZZ
1, 2, RR
1, 3, BB

un tri sur critere donnerait :
1, 3, BB
1, 2, RR
1, 1, ZZ

mais le SQL fait :
1, 1, BB
1, 2, RR
1, 3, ZZ

J'espère être assez clair :-)

Merci pour toutes réponses




Avatar
Serge Fournier
Merci pour la reponse, je vais tester de ce pas ...


"Synopsis" a écrit dans le message de
news:cie710$1982$
UPDATE MyTable Set
Ordre = (select count(*) from MyTable b where a.codeFamille=b.codeFamille
and b.Critere<=a.Critere)
from MyTable a


En imposant (a.codeFamille=b.codeFamille) dans la clause where
, je suppose que l'attribut Ordre est l'ordre dans la famille.

1, 1, BB
1, 2, RR
1, 3, ZZ
2, 1, AA
2, 2, GG
2, 3, MM


"Serge Fournier" a écrit dans le message de
news:uKeKLA$
> Bonjour tous,
>
> Le but est de faire un sql qui va réordonner un groupe d'enregistrements
> avec un tri portant sur un champ du record.
>
> ex:
> table :
> MYTABLE
> colonnes :
> CodeFamille (int)
> Ordre (int)
> Critere (int)
>
> le but est de modifier pour une famille (CodeFamille = 1) tous les


champs
> Ordre pour qu'ils reflete le tri sur "Critère".
>
> avant le tri :
> 1, 1, ZZ
> 1, 2, RR
> 1, 3, BB
>
> un tri sur critere donnerait :
> 1, 3, BB
> 1, 2, RR
> 1, 1, ZZ
>
> mais le SQL fait :
> 1, 1, BB
> 1, 2, RR
> 1, 3, ZZ
>
> J'espère être assez clair :-)
>
> Merci pour toutes réponses
>
>