Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Rotazione ed esclusione

    Devo realizzare un servizio di news, ogni news è associata ad un ID univoco e per ogni ID ho delle frasi correlate da mostrare (prelevate da una tabella diversa).

    Il problema è il seguente: essendo queste frasi in una tabella del database a parte, e dovendo io, in determinati casi, non mostrare determinati valore, come mi conviene strutturare il tutto?

    Io avrei pensato ad aggiungere un campo al database delle news, in cui specifico quali frasi non mostrare (in caso di più frasi usando lo split).

    Cosa ne pensate? Avete altri consigli?

    Ovviamente non ho nessun problema per realizzare il tutto, mi serve solo sapere, da chi si è trovato nella mia stessa situazione quale è la soluzione da adottare.

    Queste le strutture delle due tabelle:

    tbl_news
    id -> tipo contatore
    titolo -> tipo testo
    testo -> tipo memo
    esclusi -> campo aggiuntivo

    tbl_frasi_correlate
    id_frasi -> tipo contatore
    frase -> tipo testo

    Ultima precisazione: non posso inserire in tbl_news le frasi correlate.



  2. #2
    se in esclusi ci metti gli id delle frasi separati da virgola, dovrebbe andare:

    codice:
    
    select * from news,frasi where id_frasi not in news.id
    o almeno credo, mai provato

  3. #3
    Le frasi possono essere inserite in piu news?

    Se si per fare il tutto stilisticamente corretto dovresti aggiungere una tabella di intermezzo:
    tabella
    id_tabella
    id_news
    id_frase

    Piu semplice di quel che sembra

  4. #4
    Il problema è che più frasi, possono essere escluse dalla stessa news (le news sono nell'ordine del migliaio al mese).

  5. #5
    Originariamente inviato da supergeniux
    Il problema è che più frasi, possono essere escluse dalla stessa news (le news sono nell'ordine del migliaio al mese).
    Allora la struttura che ti ho indicato sopra è ottima.

    Select frasi.* FROM frasi INNER JOIN frasi_news ON frasi.id_frase = frasi_news.it_frase

    Se usi mysql ordini by rand()

    Aggiungi_
    ORDER BY rand() LIMIT 0,1

    Se usi access ti conviene aggiungere alla tabella frasi_news un campo numerico che conta le visualizzazioni delle frasi, e mostri quella col valore piu basso.
    Così non devi nemmeno fare una funzione per il random.


    Se la news da mostrare inoltre è solamente 1 basta fare l'inner join tra le 3 tabelle; se è così dimmelo che te la scrivo.

    E dimmi anche database è!


  6. #6
    Forse non mi sono spiegato, le news sono (ad esempio) 1.000 mentre le frasi sono (sempre ad esempio) 50.

    Nella news con ID 1, mostro tutte e 50 le frasi.
    Nella news con ID 2, mostro tutte le frasi tranne la 13 e la 50.
    Nella news con ID 3, mostro tutte le frasi tranne la 17 e la 49.

    Ogni frase da mostrare è associata ovviamente ad un ID.

  7. #7
    Originariamente inviato da supergeniux
    Forse non mi sono spiegato, le news sono (ad esempio) 1.000 mentre le frasi sono (sempre ad esempio) 50.

    Nella news con ID 1, mostro tutte e 50 le frasi.
    Nella news con ID 2, mostro tutte le frasi tranne la 13 e la 50.
    Nella news con ID 3, mostro tutte le frasi tranne la 17 e la 49.

    Ogni frase da mostrare è associata ovviamente ad un ID.
    Allora puoi fare il ragionamento inverso

    Tu hai:

    tabella_news
    id_news
    testo

    tabella_frasi
    id_frase
    testo

    tabella_frasi_news
    id_frasi_news
    id_frase
    id_news


    E nella tabella_frasi_news metti le frasi che NON devono essere associate a quella news

  8. #8
    E la query in questo caso come la imposto?

  9. #9

  10. #10

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.