selezione da più tabelle

  • Creatore Discussione Creatore Discussione mteresa
  • Data di inizio Data di inizio

mteresa

Nuovo Utente
16 Ago 2014
18
0
0
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?
 
per chiarezza, riepilogo i legami tra le tabelle che hai indicato,

libri
-> art_id

categoria
-> cat_id

appartenenza
-> cat_id
-> art_id

tu vuoi selezionare, per compilare la tua pagina, tutti i libri che sono classificati
(NON quelli che per errore o altri motivi, non lo sono)

con queste premesse puoi fare una semplice select,

Codice:
SELECT 
appartenenza.cat_id, 
appartenenza.art_id, 
categoria.descrizione, 
libri.titolo
libri.autore
....
FROM appartenenza, categoria, libri
WHERE
appartenenza.cat_id = $elemento_da_cercare
AND
categoria.cat_id = appartenenza.cat_id
AND
libri.art_id = appartenenza.art_id
ORDER BY
i campi che vuoi considerare
se non ti serve estrarre contestualmente i valori dalla tabella categoria, perchè già trattati,
puoi omettere dalle select precedente tutti i riferimenti alla tabella stessa

-----

nel caso tu volessi invece sapere quali libri non sono stati classificati,
quindi non esiste l'appartenenza, puoi usare,

Codice:
SELECT * FROM libri
WHERE NOT EXISTS ( SELECT art_id FROM appartenenza WHERE appartenenza.art_id = libri.art_id )

ciao
Marino
 

Discussioni simili