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

Langage PHP Discussion :

Récupérer la valeur max sql


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Pour le plaisir
    Inscrit en
    Novembre 2012
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pour le plaisir
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2012
    Messages : 178
    Par défaut Récupérer la valeur max sql
    bonjour
    je n'arrive pas a récupérer la valeur max, j'ai la valeur min...comprend pas
    je ne sais pas si il y a une autre méthode avec une seul requete et sans condition.

    Nom : Capture d'écran_20240214_185945.png
Affichages : 293
Taille : 267,0 Ko

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    $pays = "france";
    $totalP = 100000;
     
     
    	//si poids > a la valeur max de la table
    		$basmaxp = $bdd->prepare("SELECT port, MAX(poids) AS maxpoids FROM frais_port WHERE pays = :pays GROUP BY port");
    		$basmaxp->execute(array(
    		'pays'=> $pays
    		));
    	if ($basefdp = $basmaxp->fetch()){
    	 echo $FPpoids = $basefdp['maxpoids'];
    	 echo $maxprix = $basefdp['port'];
    	}
    	if(isset($FPpoids) AND $totalP > $FPpoids)
    	{
    	 $FPports = $maxprix ;
    	 $prixfport = number_format($FPports, 2);
    	 $totfport = number_format($FPports, 2). "€";
    	} else {
     
    	//calcul en fonction du poids enregistré dans la base
    		$basfraipo = $bdd->prepare("SELECT port, poids 
    		FROM frais_port 
    		WHERE poids >= :poids AND pays = :pays ORDER BY poids ASC limit 0,1");
    		$basfraipo->execute(array(
    		'poids'=> $totalP,
    		'pays'=> $pays
    		));
    		if ($elementfp = $basfraipo->fetch()){
    		$FPpoids = $elementfp['poids'];
    		$FPports = $elementfp['port'];
    		$prixfport = number_format($FPports, 2);
    		$totfport = number_format($FPports, 2). "€";
    		}
    	}

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 343
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 343
    Billets dans le blog
    17
    Par défaut
    Tu veux la valeur max de quoi ?

    Ton PHP est illisible, dur de décrypter l'intention

    PS : les données MySQL sont-elles correctement typées ? Si tes colonnes poids et/où port sont du TEXT/VARCHAR alors les calculs ne seront pas bons

  3. #3
    Membre confirmé
    Homme Profil pro
    Pour le plaisir
    Inscrit en
    Novembre 2012
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pour le plaisir
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2012
    Messages : 178
    Par défaut
    je veux récupérer le poids.
    la colonne poids en int et port en float.
    Si j'enlève GROUP BY port = je récupère bien la valeur max du poids mais pour le port j'ai la valeur plus petite soit 4.95

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 447
    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 447
    Par défaut
    Bonjour,
    Telle que ta requête est écrite, tu récupères le poids max pour chaque valeur du port.
    Si tu nous donnes un échantillon et le résultat attendu, on pourra t'aider.

    Tatayo.

    P.S. si tu gardes ta requête telle quelle, en ne supprimant que le GROUP BY, tu ne récupères pas le port min, mais "une valeur" au bon vouloir de MySQL.

  5. #5
    Membre confirmé
    Homme Profil pro
    Pour le plaisir
    Inscrit en
    Novembre 2012
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pour le plaisir
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2012
    Messages : 178
    Par défaut
    bonjour
    je voudrais récupérer le poids le plus gros pour récupérer la valeur du port en fonction du pays.
    Donc sur table 3000 pour avoir le port 33.4

  6. #6
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 343
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 343
    Billets dans le blog
    17
    Par défaut
    C'est franchement pas clair

    Je suppose que tu as les paramètres :
    :pays : où le colis doit être livré
    :poids : le poids du colis à livrer

    Ta table contient les colonnes :
    pays : pays de destination
    poids : poids max
    port : coût

    => Tu veux le coût pour tel pays immédiatement sous le poids max possible

    Ce qui donne :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT ALL id, pays, poids, port
    FROM frais_port
    WHERE pays = :pays AND :poids <= poids
    ORDER BY poids ASC
    LIMIT 1

    Ex. pour un colis de 14500 g à destination de la France tu auras le résultat { 25, france, 15000, 26.95 }

  7. #7
    Membre expérimenté
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juin 2014
    Messages
    461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2014
    Messages : 461
    Par défaut
    Citation Envoyé par maxtrident Voir le message
    bonjour
    je voudrais récupérer le poids le plus gros pour récupérer la valeur du port en fonction du pays.
    Donc sur table 3000 pour avoir le port 33.4
    La première chose à faire pour résoudre un problème est de bien le poser.
    Là, on ne comprend rien à ce que tu veux !

    Je crois comprendre que ce que tu veux, c'est afficher la valeur du port le plus élevé pour le pays.
    Si c'est bien ça, pourquoi passer par le champ poids ? (bien que ce soit faisable) ?

Discussions similaires

  1. Requête SQL : récupérer la valeur max
    Par Rodie dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 23/07/2006, 11h28
  2. requete SQL avec valeur max
    Par oeil de nuit dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/01/2006, 08h58
  3. [DAO]rechercher la valeur max d'un identifiant
    Par stressy dans le forum Access
    Réponses: 3
    Dernier message: 13/12/2005, 11h28
  4. Sélection d' une valeur max depuis 2 tables
    Par ipeteivince dans le forum Requêtes
    Réponses: 4
    Dernier message: 13/05/2005, 17h37

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