Sélectionner un autre champ avec DISTINCT

Avatar du membre
Mammouth du PHP | 1564 Messages

20 janv. 2013, 12:17

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

20 janv. 2013, 15:47

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 ;) ).

@+
Il en faut peu pour être heureux ......

Avatar du membre
Mammouth du PHP | 1564 Messages

20 janv. 2013, 21:10

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

ViPHP
xTG
ViPHP | 7331 Messages

20 janv. 2013, 22:39

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.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

20 janv. 2013, 22:42

ou utiliser une condition where correcte, de toute façon il va bien falloir que tu sache comment l'exclure cet enregistrement ;)


@+
Il en faut peu pour être heureux ......

Avatar du membre
Mammouth du PHP | 1564 Messages

20 janv. 2013, 23:37

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
  }
}

ViPHP
xTG
ViPHP | 7331 Messages

21 janv. 2013, 07:35

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...

Avatar du membre
Mammouth du PHP | 1564 Messages

21 janv. 2013, 08:56

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

21 janv. 2013, 09:28

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 ;)


@+
Il en faut peu pour être heureux ......

Avatar du membre
Mammouth du PHP | 1564 Messages

21 janv. 2013, 10:31

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 ?