Aller au contenu

Sujets conseillés

Posté

Bonjour à tous ! :)

Je souhaiterais faire une requête MySQL assez bizarre mais je ne connais pas la méthode :

- La première est de sélectionner un enregistrement sur deux. Donc n'afficher que les enregistrement 1, 3, 5, 7, ...

- La seconde est de sélectionner uniquement le premier et le dernier enregistrement.

A noter qu'il n'y a pas d'ID ou d'AUTO INCREMENT dans la table de données en question.

J'ai déjà demandé de l'aide sur un autre salon mais personne n'avait la solution ... j'espère que quelqu'un pourra m'aider ici.

Merci d'avance. :)

Posté

Comment sont classés les enregistrements ? c'est la valeur d'un champ qui dit si la ligne est paire ou impaire ?

Car si tu n'as rien de cela, tu n'auras jamais les mêmes résultats, et tout sera chamboulé si tu ajoutes des enregistrements...

Sinon il suffit dans une boucle de ne sélectionner qu'une ligne sur deux, à ma connaissance on ne peut pas le faire directement en SQL.

Pour le premier, avec un LIMIT 1 mais pour ça il faut pouvoir les trier sur un champ donné. Pour le dernier, même chose mais avec un ORDER BY champ DESC et même remarque que précédemment.

C'est quoi comme données ?

Posté

Salut et merci d'avoir répondu.

Pour faire simpliste, on peut prendre comme exemple une table à deux entrées : "text" ; "timestamp".

L'idéal serait d'ordonner la table par le timestamp, et donc de sélectionner un élement sur deux. Est-ce possible ?

Merci d'avance. :)

Posté

$sql = "SELECT champ FROM table ORDER BY champ_timestamp";
$id_sql = mysql_query(^sql);
$i=0;
while ( $row = mysql_fetch_array($id_sql) ) {
$i++;
if ( $i == 0 )
$premier = $row["champ"];
if ( $i == mysql_numrows($id_sql) )
$dernier = $row["champ"];
if ( $i%2 == 0 )
$aListe[] = $row["champ"]
}

$aListe est le tableau qui contient les enregistrements pairs.

En sachant que si tu rajoutes un enregistrement au milieu, ça décale tout !

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...