IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MySQL Discussion :

Obtenir le numéro d'une rangée


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Apprenti perpétuel
    Inscrit en
    Novembre 2012
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Apprenti perpétuel

    Informations forums :
    Inscription : Novembre 2012
    Messages : 194
    Par défaut Obtenir le numéro d'une rangée
    Bonjour,
    Pour obtenir le contenu d'une table "abcd" à partir de la rangée "$debut" sur "$quantite" de rangée je fais la requête SQL suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    query ('SELECT * FROM abcd ORDER BY Num ASC LIMIT '.$debut.','.$quantite.'');
    Comment faire pour faire l'inverse?
    Comment faire pour connaitre le numéro de la rangé FROM abcd WHERE Num="'.$_POST['Num'].'" par exemple?

    J'ai regardé sur Internet mais je ne trouve pas le bon mot clé qui me permet de trouver l'info et je tombe à chaque fois sur:
    $result->num_rows ou autre truc du genre... Mais ça, je connais déjà et ce n'est nullement ce que je cherche.

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 : 16 818
    Billets dans le blog
    14
    Par défaut
    Une table d'une base de données n'est pas une feuille de tableur !

    Il n'y a pas de numéro de ligne. Une table est comme un sac. Rien ne garantit que les lignes retournées par la requête seront toujours dans le même ordre, sauf si vous spécifiez une clause ORDER BY.

    J'ose espérer que votre table a une clé primaire et que, si c'est une table issue d'une entité-type du modèle conceptuel de données, que cette clé primaire est une colonne d'identifiant de type entier et auto-incrémentée. Il est alors facile d'obtenir cet identifiant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT id
    FROM la_table
    WHERE une_colonne = 'une_valeur'
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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 la suite Linux Mageïa !

  3. #3
    Membre très actif
    Homme Profil pro
    Apprenti perpétuel
    Inscrit en
    Novembre 2012
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Apprenti perpétuel

    Informations forums :
    Inscription : Novembre 2012
    Messages : 194
    Par défaut
    Merci Cinephil pour votre réponse.

    Oui, ma table a une clé primaire qui correspond à ma colonne "Num" qui est auto-incrémentée.

    Il ne me reste plus qu'à essayer vos recommandations et je reviendrai vers vous pour vous donner des nouvelles.

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 : 16 818
    Billets dans le blog
    14
    Par défaut
    Alors tout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT -- les colonnes nécessaires et pas étoile !
    FROM la_table
    WHERE num = :num
    Attention aux injections SQL ! Ne pas utiliser directement $_POST['num'] dans la requête ni les commandes mysql_ qui sont obsolètes mais préférer mysqli_ ou PDO.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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 la suite Linux Mageïa !

  5. #5
    Membre très actif
    Homme Profil pro
    Apprenti perpétuel
    Inscrit en
    Novembre 2012
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Apprenti perpétuel

    Informations forums :
    Inscription : Novembre 2012
    Messages : 194
    Par défaut
    Re-bonjour CinePhil,

    En relisant avec attention vos réponses, je réalise que mon souhait n'est peut-être pas possible eu égard votre remarque qui dit que SQl est un "sac" et non un tableur.

    Je vais reformuler ma question avec un exemple illustré par une photo d'écran de ma table sur phpMyAdmin.
    Table très simple de 2 colonnes: La première nommée "Num" en INT auto-incrémentée et la 2e nommée "Mail" en VARCHAR.
    Dans la première photo, on voit 4 rangée avec: 1-Olivier, 2-Susie, 3-Paul et 4-Anne.
    Nom : Table1.jpg
Affichages : 576
Taille : 13,2 Ko

    Seulement voilà Susie s'est retirée de cette liste et il ne reste plus que: 1-Olivier, 3-Paul et 4-Annne comme sur cette 2e photo d'écran.
    Nom : Table2.jpg
Affichages : 535
Taille : 10,6 Ko

    Evidement, les numéros auto-incrémentés ne changent pas. Mais 3-Paul se retrouve sur la 2eme rangée et 4-Anne sur la 3eme rangée...

    J'aimerai donc savoir quelle requête SQL faire pour savoir à quelle rangée se trouve Paul, par exemple.
    Est-ce possible? Quelle serait la syntaxe de cette requête?

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 : 16 818
    Billets dans le blog
    14
    Par défaut
    Evidement, les numéros auto-incrémentés ne changent pas. Mais 3-Paul se retrouve sur la 2eme rangée et 4-Anne sur la 3eme rangée...

    J'aimerai donc savoir quelle requête SQL faire pour savoir à quelle rangée se trouve Paul, par exemple.
    Est-ce possible? Quelle serait la syntaxe de cette requête?
    Pas beaucoup de temps pour répondre...
    Si MySQL était moins nul et connaissait les CTE, il aurait les utils pour faire ça plus facilement.

    Le principe est de créer une vue avec une requête SELECT ... ORDER BY et en y ajoutant une colonne virtuelle (nommée par exemple "ordre" qui s'incrémente. J'ai déjà vu ça sur le forum mais ne l'ayant jamais fait moi-même, je passe la main aux spécialistes.

    Cherche peut-être"MySQL OVER PARTITION".
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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 la suite Linux Mageïa !

Discussions similaires

  1. obtenir le résultat d'une requête SQL dans un range
    Par mah.ngaz dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/04/2013, 11h59
  2. Réponses: 22
    Dernier message: 03/05/2011, 14h52
  3. [VB.NET] Obtenir le numéro de la semaine d'une date
    Par alain&&thomas dans le forum Windows Forms
    Réponses: 9
    Dernier message: 07/09/2009, 17h54
  4. obtenir le numéro de semaine d'une date et vis-et-versa ?
    Par clavier12AZQSWX dans le forum Flash/Flex
    Réponses: 1
    Dernier message: 18/08/2009, 18h16
  5. Réponses: 14
    Dernier message: 01/06/2006, 17h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo