Page 1 sur 1
Sélectionner un autre champ avec DISTINCT
Posté : 20 janv. 2013, 12:17
par two3d
Bonjour,
je souhaite savoir si il y a possibilité de SELECT autre chose que notre DISTINCT ?
exemple:
mysql_query("SELECT id, DISTINCT mail FROM matable WHERE condition");
je n'y arrive pas.
Par la même occasion, je souhaite savoir si il existe un moyen de sélectionner, non pas à partir du premier enregistrement mais du second (soit le 1 et non le 0), LIMIT 1, et LIMIT 1,* ne fonctionne pas et je trouve pas sur le web.
Merci
Re: Sélectionner un autre champ avec DISTINCT
Posté : 20 janv. 2013, 15:47
par moogli
salut
quel est le résultat de la requête ?
qu'est ce qui ne "marche pas" ?
sur le principe ça ne devrait pas poser de problème.
si tu veux retirer une ligne fait le dans la condition where (vu que tu doit bien savoir a quoi elle correspond cette ligne)
tu peux aussi nous fournir le create table et quelques données de test (même bidon tant qu'elle te semble cohérentes

).
@+
Re: Sélectionner un autre champ avec DISTINCT
Posté : 20 janv. 2013, 21:10
par two3d
en fait j'ai réussi en faisant avec GROUP BY mail et en enlevant le DISTINCT mail.
je cherchais à ne pas envoyer deux fois un mail à la même personne en fait (pour un système de commentaire avec option pour être averti des new msg)
PS: pour le LIMIT, il y a une solution ?
Merci
Re: Sélectionner un autre champ avec DISTINCT
Posté : 20 janv. 2013, 22:39
par xTG
Pour ton limit je te conseille de pas te casser la tête avec le SQL.
Car cela se fait mais... A ma connaissance pas simplement, donc tu vas te retrouver avec une usine pour enlever un enregistrement.
Donc il te sera plus simple d'évincer un résultat lors du fetch de ta requête.
Re: Sélectionner un autre champ avec DISTINCT
Posté : 20 janv. 2013, 22:42
par moogli
ou utiliser une condition where correcte, de toute façon il va bien falloir que tu sache comment l'exclure cet enregistrement
@+
Re: Sélectionner un autre champ avec DISTINCT
Posté : 20 janv. 2013, 23:37
par two3d
tu dit:
de toute façon il va bien falloir que tu sache comment l'exclure cet enregistrement
d'accord mais il serai plus simple de le demander à mysql si cela est possible.
je fait un exemple de ce que je souhaitais faire:
1. j'ai listé tous les mails qui ont demandé à être avertis d'un nouveau message posté
2. je tri les enregistrement du dernier au 1er id (exemple: 48,47,46,45)
troisièmement, je voulais ne pas envoyer un mail au 1er id (la personne qui vient de posté le message, qui déclenchera le script qui envoi un mail pour prévenir l'arrivé d'un nouveau message) un petit peu compliqué, mais je l'espère, compréhensif.
pour cela j'ai donc fait:
<?php
$NbrEnregistrement = mysql_num_rows("tous les mails voulant être contacter");
$i = 0;
while($Infos = mysql_fetch_assoc("tous les mails voulant être contacter")) {
$i++;
if($i != $NbrEnregistrement) {
// j'envoi un mail
}
}
Re: Sélectionner un autre champ avec DISTINCT
Posté : 21 janv. 2013, 07:35
par xTG
Ah bah c'est simple alors si tu sais à qui tu ne dois pas l'envoyer...
WHERE id != $idEnvoyeur
C'est tordu de vouloir utiliser LIMIT pour ça, d'ailleurs je vois mal comment l'utiliser...
Re: Sélectionner un autre champ avec DISTINCT
Posté : 21 janv. 2013, 08:56
par two3d
et non, j'ai pas l'id du dernier, il me faudrait faire deux requête pour le savoir
Bizarre que ça existe pas quand même
Re: Sélectionner un autre champ avec DISTINCT
Posté : 21 janv. 2013, 09:28
par moogli
Heu le truc c'est qu'à la validation d'ajout d'une réponse sur un fil de discussion (forum ou autre) d'envoyer un mail a tout les membres qui l'on demandé ?
Si, comme le supposé il faut être connecté pour poster tu as forcément l'id de ce membre quelque part (par exemple en session ?). Si ce n'est pas le cas commen fait tu pour indiquer qui a posté ?
As partir de la tu peux utiliser le prédicat de xTG
@+
Re: Sélectionner un autre champ avec DISTINCT
Posté : 21 janv. 2013, 10:31
par two3d
oui, j'informe les personne voulant être averti d'une nouvelle réponse à un fil de discussion, en effet.
Pour cela je laisse le choix au membre (les visiteurs voit l'option désactivée) d'être averti ou non d'une nouvelle réponse.
je prend donc: l'id du membre, le pseudo, le mail et le choix (0 ou 1 pour être averti), entres autres.
toutes les heures (pour le moment car je viens d'ouvrir le site (dans ma signature)) je fait une tachecron qui envoie les avertissements aux membres qui le souhaitent (si il y a eu des réponses bien sûr).
et donc je souhaitais ne pas envoyer de mail à la dernière personne qui à posté le message qui déclenchera la tachecron, pour cela je pensais que LIMIT 1,* ou LIMIT 1, existait mais apparemment, non, je me trompe ?