Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Funzione Select Not In

  1. #1

    Funzione Select Not In

    Ciao a tutti, passo velocemente al problema:
    Ho un database di notizie di diverse categorie (Cronaca, Sport ecc ecc) sono 10 in totale che sono identificate nel db con dei numeri che poi si relazionano con un altra tabella per il nome.

    Ovvero Categoria Cronaca=51 ecc ecc

    Vorrei visualizzare solo alcune categorie definite e non visualizzare le ultime 3 più recenti delle categorie scelte, faccio la select:

    SELECT * FROM Notizie WHERE CATNotizie=45 and IDNotizia NOT IN (SELECT TOP 3 IDNotizia FROM Notizie WHERE CATNotizie=45 ORDER BY IDNotizia DESC)ORDER BY IDNotizia DESC

    Così mi funziona alla grande!

    Ma se volessi filtrare più categorie? e non visualizzare le ultime 3 notizie più recenti di quelle scelte faccio così?

    SELECT * FROM Notizie WHERE CATNotizie=45 or CATNotizie=46 and IDNotizia NOT IN (SELECT TOP 3 IDNotizia FROM Notizie WHERE CATNotizie=45 or CATNotizie=46 ORDER BY IDNotizia DESC)ORDER BY IDNotizia DESC

    Ma così non mi funziona....non dà errore ma non filtra correttamente visualizzando cmq tutto.....o meglio se metto tutto in ASC funziona non visualizzando le notizie delle categorie scelte ma togliendo le notizie più vecchie....io vorrei che fossero le più recenti!

    non sò se mi sono spiegato.....grazie in anticipo per l'aiuto.

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    253

    Re: Funzione Select Not In


    non sò se mi sono spiegato.....grazie in anticipo per l'aiuto.
    Un pochino, ma non troppo

  3. #3
    codice:
    select * from notizie
    where
    (catnotizie=45 or catnotizie=46) AND
    ID not in(select top 3 idnotizia from notizie where catnotizie=45) AND
    ID not in(select top 3 idnotizia from notizie where catnotizie=46) AND
    ID not in...
    ..
    ..
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  4. #4
    Grazie Santino per la risposta...in effetti stavo iniziando a pensare anch'io a questa soluzione (qualcosa del genere almeno ma non focalizzavo).....ora non posso testarlo ma stasera proverò....eventualmente ci risentiamo.

    Solo una cosa: ORDER BY deve essere unico oppure ogni sottoselect deve avere il suo order by.....

    cioè così:

    select * from notizie where (catnotizie=45 or catnotizie=46) AND
    ID not in(select top 3 id from notizie where catnotizie=45) AND
    ID not in(select top 3 id from notizie where catnotizie=46) ORDER BY ID DESC

    oppure:

    select * from notizie where (catnotizie=45 or catnotizie=46) AND
    ID not in(select top 3 id from notizie where catnotizie=45 ORDER BY ID DESC) AND
    ID not in(select top 3 id from notizie where catnotizie=46 ORDER BY ID DESC) ORDER BY ID DESC

    grazie ancora.

  5. #5
    ah si mi ero scordato l'order by

    uno a select/sottoselect

    edit: in sostanza ogni sotto select (ovvero la select tra parentesi) è come se fosse un mondo apparte, un mondo che ti restituisce "una nuova tabella" su cui tu puoi fare una nuova query etc etc..
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  6. #6
    Perfetto....proverò e ti saprò dire con un nuove mess stasera intorno alle 18.00.....eheheheh

    Il tutto serve per visualizzare/estrarre le 3 notizie più recenti delle categorie scelte e visualizzarle con una formattazione/css diversa (ed una query a parte).

    e con quello che ti ho chiesto vorrei visualizzare solo i titoli delle categorie scelte (tipo highlights) escludendo le tre più recenti.....

    Il tutto è già pronto ma mi mancava la query giusta... ;o)

    grazie ciao.

  7. #7
    Con un pò di anticipo rispetto alle 18.00 rispondo....

    FUNZIONA!!! grazie Santino...

    Scrivo per gli altri forumisti la query....

    SELECT * FROM News WHERE (NewsCategory=54 or NewsCategory=69 or NewsCategory=67 or NewsCategory=50)
    AND IDNews NOT IN (SELECT TOP 3 IDNews FROM News WHERE NewsCategory= 54 order by IDNews DESC)
    AND IDNews NOT IN (SELECT TOP 3 IDNews FROM News WHERE NewsCategory= 69 order by IDNews DESC)
    AND IDNews NOT IN (SELECT TOP 3 IDNews FROM News WHERE NewsCategory= 67 order by IDNews DESC)
    AND IDNews NOT IN (SELECT TOP 3 IDNews FROM News WHERE NewsCategory= 50 order by IDNews DESC)
    order by IDNews DESC

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.