C'est une question un peu bizarre, mon titre est tout aussi bizarre.MySql & PHP: Comment trouver quelle ligne a un objet dans la première place d'une liste CSV?
Ceci est une application de vote, donc j'ai une table appelée bulletins qui a deux champs importants: nom d'utilisateur et bulletin de vote. Le bulletin de vote sur le terrain est un VARCHAR mais il stocke essentiellement une liste de 25 identifiants (numéros de 1 à 200) au format CSV. Par exemple, il pourrait être:
22,12,1,3,4,5,6,7,...
Et un autre pourrait avoir
3,4,12,1,4,5,...
Et ainsi de suite.
Donc donné un ID (disons 12) Je veux trouver quelle ligne (ou nom d'utilisateur) a cet ID dans le premier endroit. Donc, dans notre exemple ci-dessus, il s'agirait du premier utilisateur car il a 12 dans la deuxième position alors que le deuxième utilisateur l'a dans la troisième position. Il est possible que plusieurs personnes aient 12 en première position (disons si les utilisateurs n ° 3 et n ° 4 l'ont au n ° 1) et il est possible que personne ne se soit classé 12.
J'ai aussi besoin de faire l'inverse (qui l'a dans le pire endroit) mais je me dis si je peux comprendre un problème le reste est facile.
Je voudrais faire cela en utilisant un nombre minimal de requêtes et de déclarations, mais pour la vie de moi, je ne peux pas voir comment.
La solution la plus simple à laquelle je pensais est de traverser tous les utilisateurs de la table et de garder une trace de qui a un identifiant dans la première place. Cela fonctionnera bien pour moi maintenant mais le nombre d'utilisateurs peut augmenter de façon exponentielle.
L'autre idée que je devais faire était une requête comme ceci:
select `username` from `ballots` where `ballot` like '12,%'
et si cela renvoie les résultats que je suis fait parce que la position 1 est le premier endroit. Mais si cela a donné 0 résultats que je ferais:
select `username` from `ballots` where `ballot` like '*,12,%'
où * est un caractère générique qui correspondra à un numéro et un seul numéro (contrairement au%). Mais je ne sais pas si cela peut réellement être fait.
De toute façon, quelqu'un a-t-il des suggestions sur la meilleure façon de faire cela?
Merci
Wow qui a fait le travail parfaitement. Je vous remercie! Je devrais apprendre les fonctions de MySQL. – encee