Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    3,259

    SQL: limit "parametrizzato"

    Ciao,

    ho una tabella SIGNUPS con colonne IDEVENT, IDUSER e DATE

    voglio selezionare le X iscrizioni ad un evento più vecchie. Farei quindi

    SELECT * from SIGNUPS WHERE IDEVENT=1 ORDER BY DATE ASC LIMIT 10

    il problema è che il numero da usare con limit è diverso da evento a evento e risiede in una tabella EVENTS con colonne IDEVENT e PLACES.

    Quindi teoricamente la query dovrebbe essere qualcosa del tipo

    SELECT * from SIGNUPS WHERE IDEVENT=1 ORDER BY DATE ASC LIMIT selectedEvent.PLACES


    Riuscite ad aiutarmi?

    Grazie

  2. #2
    La clausola limit accetta solo valori costanti e non espressioni. Per aggirare questo problema l'unico modo e' usare un prepared statement in modo da sostituire il placeholder con una variabile:

    codice:
    PREPARE STMT FROM 'SELECT * from SIGNUPS WHERE IDEVENT=1 ORDER BY DATE ASC LIMIT ?';
    SELECT PLACES INTO @a FROM selectedEvent WHERE <condizione>;
    EXECUTE STMT USING @a;
    e' necessario che la condizione sopra segnata in rosso faccia in modo che la query restituisca solo un record.

    Oppure costruisci la query in PHP e passi il parametro direttamente.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.