Trouver le champs minimum d'une table

[Résolu/Fermé]
Signaler
Messages postés
1306
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
3 mai 2021
-
Messages postés
1306
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
3 mai 2021
-
Bonjour,

J'ai une table (B) qui contient un champs idpj qui en fait est l'id des enregistrements. Il est défini en auto-increment.
Un autre champs s'appelle id_liaison, champs qui correspond à l'id d'une autre table (A), et qui sert à faire la liaison entre les deux tables (id_liaison (B)= id (A)).
Donc, j'ai plusieurs champs idpj (différent), qui peuvent avoir le même champs id_liaison. Ce qui veut dire que plusieurs enregistrements de la table B peuvent se rattacher à la table A.

Si je recherche tous les champs qui ont le même id_liaison :
$id = $_GET["id"];
$select2 = "SELECT * FROM tableB WHERE id_liaison='$id'";

Mais quoi écrire pour trouver le champs idpj minimum avec cette requête ?

Merci.

2 réponses

Bonjour,

l'id n'est pas une valeur il est risqué de l'utiliser pour cela. Vous avez un identifiant en auto-incrément mais rien ne vous garantit que cet ordre respecte une logique croissante même si a priori l'enregistrement aura lieu dans un ordre croissant(mais des données pourront être effacées, d'autres ajoutées ou modifiées...). Votre modèle logique devrait comporter un champ date si vous voulez ce genre de classement et éviter les erreurs(donc vous retrouver avec une base inutilisable).

Pour obtenir le minimum vous pouvez utiliser la fonction sql MIN:

http://dev.mysql.com/doc/refman/5.0/fr/group-by-functions.html

ou faire un ORDER BY ASC(ascendant il l'est par défaut).

http://dev.mysql.com/doc/refman/5.0/fr/select.html

Vous devez apprendre le langage SQL , langage de bas niveau donc assez simple.
Messages postés
1306
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
3 mai 2021
10
En fait, si je veux une valeur de champs minimale, c'est simplement pour sortir un seul enregistrement, et peu importe lequel.
Après mon SElect, je fais un update, et cet update je ne veux le faire que sur un seul enregistrement, et peu importe lequel.

$id = $_GET["id"];
$select2 = "SELECT min(idpj),id_liaison,accueil FROM upload where id_liaison='$id'";
$result2 = mysql_query($select2,$link) or die ('Erreur : '.mysql_error() );
$total2 = mysql_num_rows($result2);

if ($total2 > 1)
{	
	$reset=mysql_query("UPDATE upload SET accueil='X' WHERE id_liaison='$id'";
}

Ainsi, toutes les valeurs trouvées par le $select2 sont mises à jour à accueil='X', malgrès le min(idpj).