Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    una query con "priorità"

    Ciao a tutti,
    devo fare una query con "priorità"... ora mi spiego.
    Su dei prodotti ho due valori boleani: home e random.
    In home page ho 10 blocchi disponibili per inserire le anteprime di questi prodotti.
    Vorrei una query che dicesse più o meno così: selezionami i prodotti con home=1 e se non sono 10 (come i blocchi) me ne prendi quelli con random=1 fino ad arrivare a 10 prodotti selezionati.

    È possibile??

    grazie mille!!!

  2. #2
    Utente di HTML.it L'avatar di jcsnake
    Registrato dal
    Jun 2010
    Messaggi
    629
    Ciao, potresti fare una cosa del genere...

    Codice PHP:

    $strsql
    ="Select * from tua_tabella where home=1 limit 10";
    $ris=mysql_query($strsql);
    $riga=mysql_fetch_array($ris);
    $num=10;
    while(
    $riga){
    // Operazioni da effettuare con i dati
    $num--;
    $riga=mysql_fetch_array($ris);
    }
    if(
    $num>0){
    $strsql="Select * from tua_tabella where random=1";
    $ris=mysql_query($strsql);
    $riga=mysql_fetch_array($ris);
    while(
    num>&& $riga){
    // Operazioni da effettuare con i dati
    $num--;
    $riga=mysql_fetch_array($ris);
    }

    Questa è la prima soluzione che mi è venuta in mente, magari poi tu potrai migliorarla.

  3. #3
    si è possibile, anche se la query è un po complessa.

    Una cosa che farei è lanciare una query che nel where contenga una clausola where su home e random a 1, poi metterei un order by con un if (IF(home=1,1,0) ASC) in questo modo i record con home=1 vengono prima di quelli con random a 1 e poi metterei il limit.

    O, in alternativa, farei 2 select legate da un union all che fanno le estrazioni separate, limitate da al massimo 10 elementi, inserendole dentro una tabella derivata che a sua volta fa il limit a 10.

    Ma dovrebbe funzionare il primo sistema

    Detto questo, gentilmente fai attenzione quando apri i thread: c'è un'apposita sezione per parlare di SQL ed in generale di Database.

    Ti sposto li
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  4. #4
    codice:
    SELECT
        *
    
    FROM
        tabella
    
    WHERE
        home = 1
        AND
        random = 1
    
    ORDER BY
        IF(home=1, 1, 0) ASC,
        titolo
    
    LIMIT
        10
    questo è quello che dicevo, però fai qualche prova
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

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 © 2026 vBulletin Solutions, Inc. All rights reserved.