Jump to content
Sign in to follow this  
rat-du-net

[Regle]Requete SQL imbriqué

Rate this topic

Recommended Posts

Salut !!!

j'aissaye de faire une requete imbriqué.

J'ai une table dans laquel j'ai des commentaires.

Je souhaite recuperer l'id_expediteur de la personne ayant envoyé le plus de commentaire mais ne contenant aucun 1 et aucun "vote" et que l'id_exptediteur se trouve moin de 2 fois dans la table des bannis

j'ai essayé ca mais ca ne fonctionne pas :(

SELECT message, id_expediteur, count(id_expediteur) as nb_com FROM `commentaire` WHERE message NOT like '%1%' AND message NOT like '%vote%' AND date_envois >= 1138748400
AND date_envois <= 1141081200 AND id_expediteur = (SELECT id_banni as id_expediteur, count(id_banni) as nb FROM `banni` WHERE 1 GROUP BY id_banni) AND nb < 2 GROUP BY id_expediteur ORDER BY nb_com DESC LIMIT 10

Edited by rat-du-net

Share this post


Link to post
Share on other sites

Heu, et en clair, quelle est l'erreur affichée ?

Tu as d'autres précisions à nous donner ?

xpatval

Share this post


Link to post
Share on other sites

l'erreur est :

#1241 - Operand should contain 1 column(s)

en fait, c'est des que je rajoute le count(id_banni) as nb

il veut pas qu'il y ai plus d'une colonne dans la deuxieme requete

Share this post


Link to post
Share on other sites

Ta requête n'a aucun sens pour lui car un champ ne peux pas être égale à 2 valeurs :)

Share this post


Link to post
Share on other sites

en fait, c'est ici alors qu'il faut que je selectionne seulement les membre qui sont moin de deux fois dans la table :

SELECT id_banni as id_expediteur, count(id_banni) as nb FROM `banni` WHERE 1 GROUP BY id_banni

seulement un SELECT id_banni as id_expediteur, count(id_banni) as nb FROM `banni` WHERE nb < 2 GROUP BY id_banni

ne marche pas

Share this post


Link to post
Share on other sites

Essaie avec ceci :

SELECT id_banni  FROM `banni` GROUP BY id_banni HAVING count(id_banni) < 2

Share this post


Link to post
Share on other sites

a ben voila !!

SELECT message, id_expediteur, count(id_expediteur) as nb_com FROM `commentaire` WHERE message NOT like '%1%' AND message NOT like '%vote%' AND date_envois >= 1138748400
AND date_envois <= 1141081200 AND id_expediteur IN (SELECT id_banni FROM `banni` GROUP BY id_banni HAVING count(id_banni) < 2) GROUP BY id_expediteur ORDER BY nb_com DESC LIMIT 10

ca a l'air d'etre bien mieux !!!

je ne connaissais pas le HAVING count(id_banni) < 2 ca va bien e simplifier la vie !!!

a chaque fois je passais par une requete intermediaire !!!

merci beaucoup !

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...