Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043

    Query: come selezionare gli ultimi record tranne gli ultimi 4?

    ciao,
    come selezionare gli ultimi record tranne gli ultimi 4?

    Codice PHP:
    SELECT c_art_articolo.*, c_art_categoria.*, c_art_posizione.*, c_art_sottocategoria.* 
                
                
    FROM c_art_articolo
                
                INNER JOIN c_art_categoria
                ON c_art_articolo
    .id_art_categoria c_art_categoria.id_art_categoria 
                                    
                INNER JOIN c_art_sottocategoria
                ON c_art_articolo
    .id_art_sottocategoria c_art_sottocategoria.id_art_sottocategoria 
                
                INNER JOIN c_art_posizione
                ON c_art_articolo
    .id_art_posizione_sottohome c_art_posizione.id_art_posizione 
                    
                WHERE c_art_articolo
    .id_art_categoria  '3' AND c_art_articolo.id_art_posizione_sottohome '6'
                
                
    ORDER BY c_art_articolo.id_art_articolo DESC LIMIT 4 

    quindi sarebbe:

    ORDER BY c_art_articolo.id_art_articolo DESC (eccetto gli ultimi 5) LIMIT 4

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    Potrebbe anche andare bene selezionare tutto tranne gli ultimi 4 record inseriti

  3. #3
    vorresti estrarre tutti i record tranne gli ultimi 4?

    prova così (semplificando la query)

    codice:
    SELECT * FROM c_art_articolo
    ORDER BY c_art_articolo.id_art_articolo 
    DESC  LIMIT ((SELECT COUNT(*) AS nrarticoli FROM c_art_articolo) - 4)
    e comunque perchè non estrarli tutti ed evitare di processare gli ultimi 4 da php?
    semplicità ... al sol nominarla sembra svanire

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    Grazie ma mi da questo messaggio d'errore:

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /web/htdocs/www.sito.it/home/living/include_story_news1_moda.php on line 23

    sulla linea 23 ho questa riga:

    $row_b_10 = mysql_num_rows($mysql_query_10);





    Codice PHP:
    $query_10="SELECT c_art_articolo.*, c_art_categoria.*, c_art_posizione.*, c_art_sottocategoria.* 
                
                FROM c_art_articolo
                
                INNER JOIN c_art_categoria
                ON c_art_articolo.id_art_categoria = c_art_categoria.id_art_categoria 
                                    
                INNER JOIN c_art_sottocategoria
                ON c_art_articolo.id_art_sottocategoria = c_art_sottocategoria.id_art_sottocategoria 
                
                INNER JOIN c_art_posizione
                ON c_art_articolo.id_art_posizione_sottohome = c_art_posizione.id_art_posizione 
                    
                WHERE c_art_articolo.id_art_categoria  = '3' AND c_art_articolo.id_art_posizione_sottohome = '6'
                
                ORDER BY c_art_articolo.id_art_articolo DESC LIMIT ((SELECT COUNT(*) AS nrarticoli FROM c_art_articolo) - 4)"
    ;
                
                
    $mysql_query_10=mysql_query($query_10$conn);

                
    $row_b_10 mysql_num_rows($mysql_query_10); 

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    scusa una curiosità, come si fa ad evitare di processare gli ultimi 4 da php?

  6. #6
    forse mysql non consente di usare una formula nei parametri del LIMIT

    scusa una curiosità, come si fa ad evitare di processare gli ultimi 4 da php?
    codice:
    $result=mysql_query($query, $conn); 
    $num_rows = mysql_num_rows($mysql);  
    $count=0; 
    while ($row = mysql_fetch_assoc($result)) { 
    $count++; 
    if($count>($num_rows-4)){break;} 
    ... 
    }
    ma se proprio vuoi estrarre il $result esatto allora lancia due query

    codice:
    $query="SELECT COUNT(*) AS nrarticoli FROM c_art_articolo"
    $result=mysql_query($query, $conn); 
    $row = mysql_fetch_assoc($result);
    $nrarticoli = $row['nrarticoli'];
    $query="SELECT * FROM c_art_articolo ORDER BY c_art_articolo.id_art_articolo  DESC  LIMIT ".$nrarticoli-4;
    ....
    se trovi il modo di fare tutto in una query fammi sapere ... per curiosità
    semplicità ... al sol nominarla sembra svanire

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    Grazie domani provo

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.