LIMIT sur un "faux GROUP BY"


dorian53
WRInaute passionné
WRInaute passionné
 
Messages: 2215
Inscription: 10 Avr 2005

LIMIT sur un "faux GROUP BY"

Message le Lun Jan 03, 2011 18:52

Bonjour,

Question récurrente visiblement...
Est-il possible de faire un LIMIT sur un "faux GROUP BY" ?

Exemple d'un résultat de requête sur une jointure.
Code: Tout sélectionner
SELECT user_id, tas_id
FROM user
INNER JOIN task
ON user_id = use_id
WHERE...


Code: Tout sélectionner
[USER] [TASK]
  1        1
  1        2
  1        3
  2        1
  2        2
  3        1
  4        1
  4        2

L'objectif est de récupérer seulement les résultats concernant les deux premiers utilisateurs.


Code: Tout sélectionner
[USER] [TASK]
  1        1
  1        2
  1        3
  2        1
  2        2


Il faut imaginer qu'il existe 50 conditions WHERE au niveau de TASK dans la requête.

Une solution, une idée ? Merci

Dorian


IllusionPerdu
WRInaute discret
WRInaute discret
 
Messages: 141
Inscription: 11 Mar 2006

Re: LIMIT sur un "faux GROUP BY"

Message le Mar Jan 04, 2011 0:13

..WHERE user_id <= 2


Julia41
WRInaute passionné
WRInaute passionné
 
Messages: 1765
Inscription: 31 Aoû 2007

Re: LIMIT sur un "faux GROUP BY"

Message le Mar Jan 04, 2011 3:18

IllusionPerdu a écrit:..WHERE user_id <= 2

J'aurais dit pareil, mais je ne suis pas sûr que dorian53 nous ait filé un bon exemple.


dorian53
WRInaute passionné
WRInaute passionné
 
Messages: 2215
Inscription: 10 Avr 2005

Re: LIMIT sur un "faux GROUP BY"

Message le Mar Jan 04, 2011 9:20

Les deux premiers utilisateurs du jeu de résultats (pas par rapport aux id).

Je crains qu'il n'y ait pas de solution sous MySQL. On est obligé de faire une sous requête.

Code: Tout sélectionner
SELECT user_id, tas_id
FROM user
INNER JOIN task
ON user_id = use_id
WHERE...

AND user_id ON
(
SELECT user_id
FROM user
INNER JOIN task
ON user_id = use_id
WHERE...
GROUP BY user_id
LIMIT 2
)


Julia41
WRInaute passionné
WRInaute passionné
 
Messages: 1765
Inscription: 31 Aoû 2007

Re: LIMIT sur un "faux GROUP BY"

Message le Mar Jan 04, 2011 13:26

J'ai toujours l'impression que tu SELECT les mêmes trucs alors je suis pas du tout sûr de ce que tu veux.
Dans ton AND user_id ON (SELECT
GROUP BY user_id LIMIT 2
Je comprends pas pourquoi ça passe pas de le mettre en direct (après c'est que moi).
Peut-être que la commande DISTINCT ferait une différence, mais toujours autant perdu.
Après mettre une sous requête dans un while peut être plus performant.


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités