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

    Select distinct non funziona come deve

    Ciao a tutti mi ritrovo con questo "problema" ..
    Voglio visualizzare 9 articoli ma solo uno per sottocategoria ecco il codice ..

    codice:
    SELECT distinct id_sottocat,descrizione,titolo,pagina,img,id_categoria,tag_desc,id from articoli where visualizza=1  and id NOT IN ("&totid&") order by id desc LIMIT 9
    db mysql, id_sottocat è un campo int

    Non so perchè .. ma mi vengono mostrati più articoli per categoria .. come se non prendesse in considerazione la distinct ho provato anche group by ma anche lì nada

    Qualche consiglio idea?

  2. #2
    slay, la distinct non è solo su id_sottocat ma su *tutti* i campi; credo che quello che dia fastidio sia id

  3. #3
    ok .. ma devo prelevare cmq quei campi li .. togliendo id, ovviamente mi esce un errore .. come potrei fare?

  4. #4
    è un problema di logica, faccio un esempio

    idarticolo - idsottocategoria
    --------------------------------
    1 - 1
    2 - 2
    3 - 1
    4 - 1

    se fai

    select distinct idsottocategoria from tabella

    ottieni

    1
    2

    se fai

    select distinct idsottocategoria, idarticolo from tabella

    ottieni

    1 - 1
    1 - 3
    1 - 4
    2 - 2

    quindi devi scegliere, domandandoti se idarticolo ti serve davvero

    infatti, se la query ti riporta la sottocategoria 1 , quale idarticolo dovrà riportare? 1, 3 o 4?

  5. #5
    ehh l'id mi serve perchè lo passo ad una funzione che poi mi ricava altre cose ..
    MA allora secondo te come potrei impostare questa query?

    Quello che mi serve è sostanzialmente:
    Selezionare tutti i campi degli ultimi 9 articoli inseriti ma solo uno per sottocategoria

  6. #6
    prova con questa

    SELECT
    id_sottocat,
    MAX(descrizione),
    MAX(titolo),
    MAX(pagina),
    MAX(img),
    MAX(id_categoria),
    MAX(tag_desc),
    MAX(id)
    from
    articoli
    where
    visualizza=1
    and id NOT IN ("&totid&")
    GROUP BY
    id_sottocat
    LIMIT
    9


    ma controlla bene i dati che ti ritorna, perché ho un dubbio

  7. #7
    no mi da questo errore ...
    Item cannot be found in the collection corresponding to the requested name or ordinal.

    anche se i campi che mi servono vengono scritti nella query ma è come se non li trovasse ..

  8. #8

  9. #9
    codice:
    Set rs5 = Server.CreateObject("ADODB.Recordset") 
    sql5 = "SELECT id_sottocat,descrizione,id_categoria,titolo,pagina,img,tag_desc,id from articoli where visualizza=1  and id NOT IN ("&totid&")  group by id_sottocat order by id desc LIMIT 9"
    Set rs5 = objConn.Execute(sql5)
                            
    if not rs5.EOF then
                                    
    do until rs5.eof
     call mnomecategoria(rs5("id_categoria"))
     call mnomesottocategoria(rs5("id_sottocat"))
                                    
     ... qui mi stampo ciò che mi serve (descrizione,titolo,img ecc..)
               
    rs5.movenext 
    loop 
                            
                            
    end if
    rs5.Close
    Set rs5 = Nothing
    A sto punto se no si riesce con una query ... bypasserò la cosa con qualche ciclo e condizione

    quello che mi serve è mostrare l'id più grande degli ultimi 9 articoli ma solo uno per sottocategoria

  10. #10
    Alla fine ho risolto usando delle condizioni e ho ottenuto il risultato voluto ..

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.