Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    202

    [MYSQL] Help semplice query per estrarre NEWS lette e non

    Ciao,

    Credo di essere alle prese con una banale query ma nn riesco a risolvere il problema... In pratica ho una tabella che memorizza
    delle news e una in cui viene memorizzato l'id dell'utente che ha letto la news.

    NEWS
    -----------
    ID_NEWS
    TITOLO
    TESTO
    FLAG_ATTIVA

    NEWS_LETTE
    ------------
    ID_NEWS
    ID_UTENTE
    FLAG_LETTO

    Mi interessa estrarre tutte le news + FLAG_LETTO in modo da visualizzare le news nn lette in grassetto!.

    Ecco la query che ho fatto.

    select * from news N left join news_lette NS on N.ID_NEWS=NS.ID_NEWS where FLAG_ATTIVA='ATT' and ID_UTENTE=1

    Ma in questo modo estrae solo le news "LETTE" cioè dove ID_UTENTE è presente in news_lette

    Avete qualche suggerimento???

  2. #2
    Ma in News_Lette metti tutte le associazioni Id_utente - Id_News con Flag_Letto=0 ogni volta che inserisci una nuova news?
    Perchè se non fai così è difficile che tu possa ritrovarle quando fai la join delle due tabelle...
    ***************************
    Non può piovere per sempre...
    ***************************

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    202
    No!, in news_lette inserisco L'id_utente e flag_letto=1 solo quando è stata effettivamente aperta (letta).

    Anche perchè altrimenti dovrei ad ogni news inserita, aggiungere in news_lette tutti gli id degli utenti presenti con flag_letto=0...e di conseguanza anche in fase di registrazione di un nuovo utente aggiornare la tab.

    Ritengo questo poco ottimizzato...NO???

  4. #4
    Originariamente inviato da Costy81
    No!, in news_lette inserisco L'id_utente e flag_letto=1 solo quando è stata effettivamente aperta (letta).

    Anche perchè altrimenti dovrei ad ogni news inserita, aggiungere in news_lette tutti gli id degli utenti presenti con flag_letto=0...e di conseguanza anche in fase di registrazione di un nuovo utente aggiornare la tab.

    Ritengo questo poco ottimizzato...NO???
    Certo che è poco ottimizzato! Dalla prima query che hai scritto pero' era l'unico modo per avere il risultato che chiedi...

    Appurato che il db è ben fatto allora direi che ti conviene fare due query:
    - una è quella che hai gia scritto e che ti da' le news lette;
    - l'altra ti rende le news non lette
    Codice PHP:
    SELCT FROM NEWS WHERE (FLAG_ATTIVA='ATT'  AND ID_NEWS NOT IN (SELECT ID_NEWS FROM NEWS_LETTE WHERE ID_UTENTE=1)) 
    ***************************
    Non può piovere per sempre...
    ***************************

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    202
    Prima di tutto grazie mille per l'aiuto!!!.

    Non c'è modo di risolvere il tutto attraverso una sola query? Anche cambiando le tabelle del db.

    Perchè attraverso due query non posso ordinarle correttamente per data!.

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.