Bonjour,
J'essaye de faire une requête un peu complexe et j'aurai besoins de votre aide.
Voici la table :
Ors donc je voudrai. Récupérer toutes les entrée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 CREATE TABLE IF NOT EXISTS `small_messages` ( `id` int(11) NOT NULL AUTO_INCREMENT, `sender_id` int(11) NOT NULL, `receiver_id` int(11) NOT NULL, `read` tinyint(1) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=37 ;
- WHERE sender_id = 1 || receiver_id = 1
- ORDER BY id DESC
Jusque la c'est les doigt dans le nez.
Maintenant le brain fuck, je voudrais limiter la cherche, pour quelle s’arrête :
POUR la paire sender_id-receiver_id courante (attention 1-6 est une paire, 6-1 en est une autre)
SI (sender_id = 1 OU (sender_id != 1 ET read = 1))
EN respectant l'ordre de l'ORDER BY
ET en gardant la ligne en question dans les résultats de la requête.
Je sent que je vous ais perdu, si si. Alors je vais faire un exemple.
Soit les valeur suivantes :
Le résultât sera.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 id sender_id receiver_id read 1 6 1 1 2 1 6 0 3 1 6 0 4 1 6 1 5 6 1 1 6 1 8 0 7 1 8 0 8 6 1 0
La ligne 1 n'est pas conserver car pour la ligne 5 sender_id != 1 && read = 1 , donc la recherche s’arrête pour la paire (sender_id = 6 && receiver_id = 1)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 id sender_id receiver_id read 8 6 1 0 7 1 8 0 5 6 1 1 4 1 6 1
Les ligne 2 et 3 ne sont pas conserver car pour la ligne 4, sender_id = 1, donc la recherche s’arrête pour la paire (sender_id = 1 && receiver_id = 6)
La ligne 6 n'est pas conserver car pour la ligne 7, sender_id = 1, donc la recherche s’arrête pour la paire (sender_id = 1 && receiver_id = 8)
J'ai l'impression que je demande la lune et toutes les étoiles qui vont avec
Alors si votre solutions tien en plusieurs requêtes et/ou elle emplois un peut de langage de script PHP BASH etc pour faire du post-traitement, et/ou elle ne fait que la moitié de ce que je veux. C'est vraiment pas grave.
Ma table contient vraiment beaucoup d'entrée et je voudrai limité les résultat de la requête au maximum question d'optimisation.
Voila, voila.
Y à t-il un courageux volontaire dans l’assistance pour lancer une idée ?
Partager