• User

    selezionare dati da più tabelle

    ciao ragazzi ... vi chiedo un aiuto. ho una tabella " libri " dove vi sono i vari libri che possono essere prenotati nel mio sito di prenotazione on line di una libreria .
    in questa tabella vi sono libri di ogni genere : cultura generale, storia, geografia ecc. tutti i libri vengono quindi memorizzati in questa tabella. nel mio sito ogni utente ha la possibilità di scegliere se entrare nell' area "cultura generale" per guardare solo i libri di cultura generale, nell' area "storia" per guardare solo quelli di storia ecc ... ho creato una seconda tabella chiamata categoria che ad ogni categoria per es cultura generale, storia a cui cui appartiene un libro associa un ' id! alla categoria cultura generale è associato id =1, storia l' id=2 ecc ...
    ho poi creato un'altra tabella chiamata" appartenenza" che contiene la chiave primaria della tabella categoria e della tabella libri, ogni volta che aggiungo un libro viene aggiunta una riga nella tabella appartenenza in cui vi è l ' id del libro e l 'id della categoria a cui appartiene... quello che voglio fare è mostrare in una singola pagina, per esempio nell' area culturagenerale ,solo quelli con l ' id della tabella appartenenza uguale a uno... come si fa?

    la chiave primaria della tabella libri è art_id, per visualizzare i libri di cultura generale vorrei selezione tutti gli art_id nella tabella libri che hanno

    come id nella tabella appartenenza uguale a uno. come si procede?


  • User Attivo

    Devi fare quasi certamente una query di JOIN sull'ID di categoria, avendo cura di selezionare volta per volta la categoria che ti interessa.
    Poi ti selezioni i campi che ti servono e dovresti aver fatto.


  • User

    mi spiegheresti come?
    io farei così

    $ris="SELECT*FROM categoria, appartenenza WHERE categoria.categ=appartenenza.idap and categ='culturagenerale'";

    e poi? come si procede?


  • User Attivo

    è difficile dirlo senza avere le tabelle davanti, dovrebbe essere giusto come scrivi ma giustamente andrebbe testato sul campo.

    Ad ogni modo, in quella select è meglio non mettere * (anche se non è sbagliato) bensì il nome dei campi che ti servono separati da virgola, così come li prendi dalle tabelle in modo da ritrovarteli pronti per caricarli nel sito. Tutto dipende, inoltre, se usi PDO o il metodo classico per interagire col DB via PHP, ti suggerisco una letta veloce alla documentazione che fai prima di qualsiasi mia spiegazione.


  • User

    grazie mille ho risolto 😄