Visualizzazione dei risultati da 1 a 8 su 8

Discussione: problema query

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043

    problema query

    ciao, ho un sito di notizie.
    Ogni notizia appartiene ad una categoria.
    Le categorie sono le seguenti:

    Accessori
    Beauty
    Moda
    Lusso
    Travel
    Gourmet
    Interior
    Eco
    Hi tech
    Tempo libero


    ora nella query prende gli untimi 10 record inseriti indipendentemente da quale categoria provengono, come faccio invece a dirgli di prendermi l'ultimo record inserito di ogni categoria?
    Quindi uno per ogni categoria.

    Codice PHP:
    SELECT c_art_articolo.*, c_art_categoria.*, c_art_posizione.*  
                
                
    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_posizione
                ON c_art_articolo
    .id_art_posizione_home c_art_posizione.id_art_posizione 
                    
                WHERE c_art_articolo
    .id_art_posizione_home != '7' AND 
                ((
    c_art_articolo.data_evento '$data_attuale') OR (c_art_articolo.data_evento '$data_attuale' AND c_art_articolo.ora_pubblicazione <= '$ora_attuale'))
                
                
    ORDER BY c_art_articolo.data_evento DESCc_art_articolo.ora_pubblicazione DESC LIMIT 10 

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    420
    Forse dovresti usare group by categoria, ma credo che nn sia questa la sezione giusta del forum
    - "Si sono vegetariano. Diciamo che non mangio nulla che abbia un cuore"
    - "E i carciofi?"

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    e col group by categoria cosa ottengo?

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    420
    li raggruppi per categoria e poi di ogni categoria prendi quello "having" maxdata.. ma la sintassi corretta non la ricordo
    - "Si sono vegetariano. Diciamo che non mangio nulla che abbia un cuore"
    - "E i carciofi?"

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    Originariamente inviato da sitodue
    li raggruppi per categoria e poi di ogni categoria prendi quello "having" maxdata.. ma la sintassi corretta non la ricordo
    haio, allora mi sa che è difficile, col php sono un utente medio e alcune cose sono ancora un po ostiche per me.

    Su internet allora cercherò "having", "maxdata" e poi vedrò come fare il group by.

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    Ho provato con group by, ma è sparito tutto, non da errore, ma non si vedono neanche più i risultati.

    Codice PHP:
    SELECT c_art_articolo.*, c_art_categoria.*, c_art_posizione.*  
                
                
    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_posizione
                ON c_art_articolo
    .id_art_posizione_home c_art_posizione.id_art_posizione 
                
                GROUP BY c_art_categoria
    .id_art_categoria
                    
                WHERE c_art_articolo
    .id_art_posizione_home != '7' AND 
                ((
    c_art_articolo.data_evento '$data_attuale') OR (c_art_articolo.data_evento '$data_attuale' AND c_art_articolo.ora_pubblicazione <= '$ora_attuale'))
                
                
    ORDER BY c_art_articolo.data_evento DESCc_art_articolo.ora_pubblicazione DESC LIMIT 9 

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    il group by da problemi anche se scrivo una query sul db, vedi allegato.
    Immagini allegate Immagini allegate

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    ecco ho fatto così, va meglio ma ancora non funziona tanto bene, perchè non me li mette in ordine per data e ora descrescente. Dovrei mettere il ORDER BY prima del GROUP BY, ma se lo faccio non funziona più. Certo se ci fosse qualcuno che mi desse una mano..


    Codice PHP:
    SELECT c_art_articolo. * , c_art_categoria. * , c_art_posizione. * 
    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_posizione ON c_art_articolo
    .id_art_posizione_home c_art_posizione.id_art_posizione

    WHERE c_art_articolo
    .id_art_posizione_home != '7' 
    AND c_art_articolo.id_art_categoria != '11' AND c_art_articolo.id_art_categoria != '12' AND c_art_articolo.id_art_categoria != '13' AND c_art_articolo.id_art_categoria != '14' 
    AND ((c_art_articolo.data_evento '$data_attuale'
    OR (
    c_art_articolo.data_evento '$data_attuale' AND c_art_articolo.ora_pubblicazione <= '$ora_attuale'))

    GROUP BY c_art_categoria.id_art_categoria
    ORDER BY c_art_articolo
    .data_evento DESC c_art_articolo.ora_pubblicazione DESC 
    LIMIT 10 

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.