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

PHP & Base de données Discussion :

Extraire des données avec SELECT [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2024
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Janvier 2024
    Messages : 7
    Par défaut Extraire des données avec SELECT
    Bonjour,

    Je suis bloqué sur une commande pour extraire des données de ma table.
    D'habitude en fouillant et en bricolant je trouve la solution mais là...

    Voici ma table (avec des lignes en moins) :

    id val val2 lum date time
    1 71 120 0 20/08/2012 00:17:56
    17 1000 30 0 21/08/2012 01:25:43
    24 1000 111 0 21/08/2012 01:27:43
    33 555 127 0 21/08/2012 06:09:07

    Je souhaite afficher sur ma page les données de la ligne avec "val = 1000" et ayant l'id le plus grand. Dans l'exemple ce serait id 24

    Donc ma logique était d'identifier les lignes avec "val = 1000" et d'ensuite faire un MAX(id) mais sans succès.
    J'ai testé quelques exemples trouvés en ligne avec WHERE ou GROUP BY mais rien de fonctionnel.

    Merci d'avance pour votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 438
    Par défaut
    Bonjour,
    C'est une question qui revient souvent.
    escartefigue nous a fait un article qui donne 2/3 méthodes: c'est .
    L'article parle de "la ligne la plus récente", mais c'est la même chose.

    Par contre attention, si l'id est attribué automatiquement par MySql, rien ne garantit que l'Id le plus grand est celui de al dernière ligne.

    Tatayo.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2024
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Janvier 2024
    Messages : 7
    Par défaut
    Bonjour Tatayo,

    Merci pour l'orientation, quand on cherche avec les bons mots on trouve mieux.

    Cette adaptation du code fonctionne dans mon cas.
    Je tiens compte de la remarque sur l'utilisation de id dans ma recherche, je vais utiliser TIMESTAMP dans mon code final par sécurité.

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT val, val2, lum, date, time
    FROM donnée
    WHERE (val, time) IN (
    	SELECT val, MAX(id)
    	FROM donnée
    	WHERE val = '1000'
    )";

  4. #4
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Je m'interroge sur l'utilité de séparer date et time en deux colonnes plutôt qu'une seule colonne datetime.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2024
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Janvier 2024
    Messages : 7
    Par défaut
    J'avais séparé les deux données pour pouvoir traiter plus facilement les données relatives à une journées.
    Mini, Maxi, Moyenne par exemple, vu que j'utilise également TIMESTAMP je pourrais me passer de l'heure et même de la date.
    Mais je ne suis pas encore dans l'optimisation du code.

    Finalement je pense abandonner cette méthode car beaucoup trop gourmande en ressource.
    Sauf si j'en trouve une autre plus intéressante.

    Je vais modifier l'émetteur des donnés pour qu'il me prémache le travail.

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 610
    Billets dans le blog
    10
    Par défaut
    Il existe des fonctions permettant d'extraire une partie (date, année, mois, heure...) d'un timestamp. Donc il est très facile de traiter une journée particulière à partir d'un timestamp.
    Je n'ai pas compris quelle méthode était "trop gourmande en ressources" ?

    À propos d'optimisation, un test d'existence est très souvent beaucoup plus performant en utilisant (NOT) EXISTS qu'avec (NOT) IN (subselect).
    En effet, la deuxième solution construit tout l'ensemble des lignes correspondantes au prédicat, alors que la première s'arrête dès qu'une ligne satisfait le prédicat.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. pb avec select sur deux champs
    Par graphicsxp dans le forum Langage SQL
    Réponses: 7
    Dernier message: 22/03/2005, 15h30
  2. Probleme avec Select Case
    Par GeffD dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 07/03/2005, 15h28
  3. Insert avec select
    Par Alexandre` dans le forum Langage SQL
    Réponses: 11
    Dernier message: 25/01/2005, 15h16
  4. Problème avec select top
    Par franculo_caoulene dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 10/12/2004, 14h55
  5. utilisation de fetch avec select
    Par arwen dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 06/06/2003, 10h03

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