Trouver le champs minimum d'une table

Résolu/Fermé
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 - 2 avril 2012 à 18:54
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 - 3 avril 2012 à 10:34
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.
0
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 11
3 avril 2012 à 10:34
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).
0