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

    [MySql] Ordinare record

    Buon giorno.
    Questa query estrapola tutti quei record che hanno nel campo PosNews valore da 1 a 10
    codice:
    SELECT * FROM TB_NEWS
    WHERE ('2017-11-10 08:00:00' BETWEEN dDataIns AND dDataScad) AND (bStatus=1 OR PosNews>0) 
    AND Intranet=1 
    ORDER BY bStatus DESC, PosNews ASC, dDataNews DESC LIMIT 0, 15
    In questo modo, in visualizzazione ho soltanto i 10 record come sopra descritto.
    Però vorrei visualizzare anche i restanti 5 che hanno come valore 0.

    In pratica

    Titolo - Posizione
    A - 1
    B - 2
    M - 10
    N - 0
    O - 0
    ecc. ecc.

    Come posso fare?
    Grazie a tutti.
    Ultima modifica di ANTAGONIA; 10-11-2017 a 12:31

  2. #2
    Antagonia,

    se ho capito bene, vuoi ordinare i record per posizione se il loro valore e` != 0, e poi il resto dei record con posizione = 0.
    Se in output ottieni solo i record con posizione != 0, e` per via del filtro (bStatus=1 OR PosNews>0). cioe` i record con posizione = 0 hanno bStatus != 1.


    Per l'ordinamento, una soluzione puo` essere quella di generare un nuovo attributo per discriminare l'ordinamento, e.g.:

    codice:
    WITH tmp AS ( SELECT * FROM TB_NEWS
    WHERE
    ('2017-11-10 08:00:00' BETWEEN dDataIns AND dDataScad) /* AND (bStatus=1 OR PosNews>0) */
    AND
    Intranet=1 )
    SELECT *, ( posNews == 0 ) AS discriminant
    FROM tmp
    ORDER BY bStatus DESC
    , discriminant, PosNews ASC, dDataNews DESC LIMIT 0,15


    Vedi http://sqlfiddle.com/#!9/b608d2/5

  3. #3
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,360
    Prova questo.

    codice:
    SELECT * FROM TB_NEWS
    WHERE ('2017-11-10 08:00:00' BETWEEN dDataIns AND dDataScad) AND (bStatus=1) AND Intranet=1 
    ORDER BY bStatus DESC, case when PosNews=0 then PosNews+100 else PosNews end ASC, dDataNews DESC LIMIT 0, 15
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

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