Trouver le champs minimum d'une table

Résolu
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   -  
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   -
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.
A voir également:

2 réponses

xxxweb
 
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 1476 Date d'inscription   Statut Membre Dernière intervention   11
 
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