2009-10-18 12 views
0

J'essaie de créer une requête qui va sélectionner un élément pour la première catégorie, deux éléments pour la deuxième et 2 éléments pour la troisième catégorie, pour d'autres un seul élément.MySql aléatoire catégorie limitée sélectionnez

Le problème est qu'il doit y avoir une requête. Je pense que c'est possible mais je ne peux pas le comprendre.

+0

À quoi ressemble votre tableau? – random

Répondre

0

Ce:

SELECT * 
    FROM (SELECT i.* 
      FROM ITEM i 
     WHERE i.categoryid = 1 
     LIMIT 1), 
     (SELECT i.* 
      FROM ITEM i 
     WHERE i.categoryid = 2 
     LIMIT 2), 
     (SELECT i.* 
      FROM ITEM i 
     WHERE i.categoryid = 3 
     LIMIT 2) 

... sélectionneront un élément pour la première catégorie, deux articles pour le deuxième et 2 articles pour la troisième catégorie. J'utiliserais UNION ALL sur UNION, car il est plus rapide car il ne supprime pas les doublons. Sans en savoir plus sur le modèle de données (tables impliquées), il est difficile de dire ce qui fonctionnerait le mieux.

+0

Ehm, ceci est une jointure croisée, il ne retournera pas 5 lignes. –

1

On dirait que vous avez besoin du SQL UNION operator. Comme mentionné dans les commentaires, cependant, nous aurions besoin de savoir à quoi ressemble votre table pour donner plus d'aide.

Questions connexes