Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    2,460

    [MySql] aiuto progettazione db

    Sto facendo un cms e ho un problema..
    Vorrei fare in modo che un determinato articolo da me inserito nella tabella "articoli" possa apparire in più categorie.

    La struttura è come segue..

    Tabella articoli:
    id
    titolo
    autore
    testo
    categoria

    Tabella categoria:
    id
    titolo
    descrizione

    Come posso associare il campo articoli.categoria a più categorie ?

  2. #2
    con una terza tabella di unione.

    Tabella unione

    id_unione
    id_articoli
    id_categoria



    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    274
    Sempre mantenendo un database normalizzato potresti far diventare la tabella articoli qualcosa del genere:
    id
    titolo
    autore
    testo

    Mantieni la tabella delle categorie inalterata e ne aggiungi una chiamata 'articolitocategoria' (o con un nome più breve ) dove ti trovi con i campi:
    idarticolo
    idcategoria
    In questo caso puoi fare inserire due o più volte l'id di un articolo linkandolo a categorie differenti
    esempio:
    idarticolo=1 idcategoria=1
    idarticolo=1 idcategoria=2

    Quando poi devi mostrare una lista di articoli presenti in una categoria te la cavi facilmente con una query tipo:

    SELECT * FROM articoli, articolitocategoria WHERE articolitocategoria.categoryid=1 AND articoli.id=articolitocategoria.idarticolo;

    banned,

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    2,460
    ok ammettiamo che ho la tabella unione:

    id articolo
    id categoria

    Al momento della insert come faccio ad inserire l'id dell'articolo anche nella tabella unione se uso auto_increment ? (quindi non lo so a priori)

  5. #5

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    2,460
    a MySql mi interfaccio col c...

    Cercherò la funzione interessata !

    Grazie

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    274
    è LAST_INSERT_ID ma odio il manuale di mysql e non lo troverò mai :P

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    2,460
    mysql_insert_id() converte il tipo restituito dalla funzione nativa dell'API C di MySQL mysql_insert_id() al tipo long (chiamata int nel PHP). Se la colonna AUTO_INCREMENT è del tipo BIGINT, il valore restituito da mysql_insert_id() sarà inesatto. In questo caso si usi la funzione SQL di MySQL LAST_INSERT_ID() in una query SQL.

    Mi sorge un dubbio però:
    siccome io le query le faccio con 50 client in parallelo, è possibile che mysql_insert_id() mi restituisca l'id di una query effettuata qualche millisecondo dopo da un altro thread ?

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    2,460
    Non si può condividere un campo con 2 tabelle ?

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    274
    Forse questo fa al caso tuo

    Per last_insert_id() non ho mai riscontrato problemi di sorta

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.