Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/10/2011, 23h54   #1
Futur Membre du Club
 
Avatar de p0Kep0K
 
Homme
Webdesigner
Inscription : novembre 2003
Messages : 76
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Suisse

Informations professionnelles :
Activité : Webdesigner
Secteur : Communication - Médias

Informations forums :
Inscription : novembre 2003
Messages : 76
Points : 18
Points : 18
Par défaut Inversion de position

Bonsoir,

Je cherche vainement un moyen d'inverser la position des enregistrements d'une table... Concrètement, je suis en train de mettre en place une galerie photos avec, pour chaque image, un enregistrement comportant id, nom et position et, dans mon CMS, j'y intègre un bouton "inverser l'ordre".

J'aimerais, en une requête UPDATE, pouvoir inverser la position de chaque enregistrement, c'est-à-dire: l'enregistrement en dernière position se retrouve en position 1, l'enregistrement en avant-dernière position se retrouve en position 2, etc.

Y a-t-il une solution à ça?

Merci d'avance pour votre aide!
p0Kep0K est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 08h41   #2
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 791
Points : 17 791
Oui, utilisez un fichier COBOL à la place d'un SGBDR !

Les SGBDR comme MySQL c'est HasBeen et ça coute cher..... et puis ça sait pas faire ça !!!

























Et si vous lisiez un peu avant de poser des questions stupides ?

http://sqlpro.developpez.com/cours/sqlaz/erreurs/#L6

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 09h18   #3
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 530
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 530
Points : 3 523
Points : 3 523
Saluton,
Sauf le respect que je dois à Maître SQLpro, son interprétation de la demande de p0Kep0K est un chouïa erronée.
Il y a, selon moi, méprise entre ordre des lignes (que p0Kep0K appelle enregistrements), et ordre des colonnes, dans le schéma de la table, auquel se réfère le bon maître.
Ici, un ORDER BY position DESC devrait résoudre le problème.
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 10h10   #4
Futur Membre du Club
 
Avatar de p0Kep0K
 
Homme
Webdesigner
Inscription : novembre 2003
Messages : 76
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Suisse

Informations professionnelles :
Activité : Webdesigner
Secteur : Communication - Médias

Informations forums :
Inscription : novembre 2003
Messages : 76
Points : 18
Points : 18
Merci Maljuna Kris pour ta réponse, je crois que je me suis mal exprimé car aucun des deux n'a compris...

Un petit schéma devrait faire l'affaire.
Dans ma table, j'ai ça:

Code :
1
2
3
4
5
6
7
8
 
id     nom          position
----------------------------
20     img1.jpg     1
21     img2.jpg     2
22     img3.jpg     3
23     img4.jpg     4
24     img5.jpg     5
et à l'aide d'une seule requête UPDATE, j'aimerais obtenir ça:

Code :
1
2
3
4
5
6
7
8
 
id     nom          position
----------------------------
20     img1.jpg     5
21     img2.jpg     4
22     img3.jpg     3
23     img4.jpg     2
24     img5.jpg     1
C'est mieux?
p0Kep0K est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 11h55   #5
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 791
Points : 17 791
Ce serait possible si MySQL gérait les fonctions de fenêtrage comme ROW_NUMBER()... A lire : http://sqlpro.developpez.com/article...use-window/#L0

mais comme MySQSL est très loin d'implémenter tout le SQL, je vous souhaite bonne chance.
A lire sur les manques de MySQL : http://blog.developpez.com/sqlpro/p9...udre-aux-yeux/

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 13h37   #6
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 530
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 530
Points : 3 523
Points : 3 523
Citation:
Envoyé par p0Kep0K Voir le message
Dans ma table, j'ai ça:

Code :
1
2
3
4
5
6
7
8
 
id     nom          position
----------------------------
20     img1.jpg     1
21     img2.jpg     2
22     img3.jpg     3
23     img4.jpg     4
24     img5.jpg     5
et à l'aide d'une seule requête UPDATE, j'aimerais obtenir ça:

Code :
1
2
3
4
5
6
7
8
 
id     nom          position
----------------------------
20     img1.jpg     5
21     img2.jpg     4
22     img3.jpg     3
23     img4.jpg     2
24     img5.jpg     1
Quel intérêt de faire ça par UPDATE ?
C'est une très très mauvaise idée que de modifier des identifiants, a fortiori auto-incrémentés.
J'en reste à ma version
Code :
1
2
3
SELECT id,nom, position
FROM latable
ODER BY position DESC
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 13h43   #7
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 328
Points : 18 328
Envoyer un message via MSN à CinePhil
Il ne veut pas modifier les identifiants mais la colonne position.

Ceci dit, s'il s'agit juste de présenter les données dans l'ordre inverse de la colonne position, ta solution est effectivement la bonne !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h12.


 
 
 
 
Partenaires

Hébergement Web