2010-10-12 6 views
0

J'ai une table avec SIGNUPS pour différents événements. Cette table contient des colonnes simples telles que ID, IDUSER, IDEVENT et DATE. Chaque événement est caractérisé par un nombre maximum de personnes qui peuvent participer, donc la table EVENTS a une colonne appelée disons PLACES. Ce que je veux obtenir pour un événement donné est la liste des premiers "PLACES" inscrits à cet événement, c'est-à-dire les personnes qui se sont inscrites à temps. Les autres seront marqués sur une liste d'attente.Sql: simuler une LIMIT paramétrée

Le comportement doit être quelque chose comme « sélectionner les premières places à signups événement X »

J'essayé d'utiliser PLACES LIMIT, mais il ne semble pas être une syntaxe valide.

Un conseil?

Répondre

1

Il existe un known bug dans MySQL concernant l'utilisation de variables avec la clause LIMIT.

Cet article décrit également une solution de contournement publié par Kian Ryan:

DROP PROCEDURE IF EXISTS get_product_range $$ 
CREATE PROCEDURE get_product_range (
IN _START INTEGER, 
IN _LIMIT INTEGER 
) 
BEGIN 
PREPARE STMT FROM 
" SELECT * 
FROM products LIMIT ?,? "; 
SET @START = _START; 
SET @LIMIT = _LIMIT; 
EXECUTE STMT USING @START, @LIMIT; /* Known bug in mySQL5 - exists as feature req. */ 
END $$ 

HTH