Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776

    [MYSQL] dati 2 campi, visualizzare record in ordine prima secondo ordine primo campo e poi secondo ordine secondo campo

    Ciao a tutti,

    in una tabella ho 2 campi:
    numero_visite
    data_registrazione

    Vorrei sapere se, mediante una query, è possibile effettuare una select dove si vedano in ordine, prima i record con una data_registrazione recente(ad esempio massimo 15 giorni), senza tenere conto del numero delle visite, e poi i rimanenti record della stessa tabella, che apparissero secondo il numero di visite che hanno ricevuto.

    Vorrei in questo modo visualizzare nella home gli ultimi prodotti aggiunti e poi quelli più visitati senza ovviamente ripetere i record.

    Potrei farlo con 2 select, lato server con php, togliendo dalla seconda select(risultato) tutti i record già presenti nella prima, vorrei sapere se è possibile farlo direttamente da MySql in qualche modo.

    Grazie,
    Roberto

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    proprio come l'hai descritta tu:

    select top 1 * from tabella order by data_registrazione desc
    union
    select * from tabella where dataregistrazione not in
    (select top 1 * from tabella order by data_registrazione desc)
    order by numero_visite desc
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    "top" non mi risulta esistere per MySQL (è per MSSQL).
    Si usa LIMIT (alla fine della query)

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776
    Grazie ad entrambi per la risposta:

    ho provato ad usare, nel mio caso specifico(MySql), questa query:

    select * from luoghi order by data desc limit 1
    union
    select * from luoghi where data not in
    (select * from luoghi order by data desc limit 1)
    order by numero_visite desc

    Però mi da questo errore:
    #1221 - Incorrect usage of UNION and ORDER BY

    Dove sbaglio?

    Grazie,
    Roberto

  5. #5
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    le (

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776
    Ho provato a togliere le parentesi:
    select * from luoghi order by data desc
    union
    select * from luoghi where data not in
    select * from luoghi order by data desc limit 1
    order by numero_visite desc limit 1

    Mi da sempre errore:
    #1221 - Incorrect usage of UNION and ORDER BY

  7. #7
    select * from (
    select '1' as ord1, cast(data as varchar(20)) as ord2 , * from tabella where data>curdate-15
    UNION
    select '1' as ord1, cast(numvisite as varchar(20)) as ord2 , * from tabella where data<curdate-15
    ) order by ord1,ord2

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.