Query di selezione

di il
2 risposte

Query di selezione

Salve a tutti,

Devo risolvere in PSQL (va bene anche in SQL stantard o Microsoft Access, posto qui dato che non esiste una sezione di PSQL e dato che questa è la sezione più attiva e inerente all'argomento)

Questa è la mia base di dati, dato dal seguente schema logico relazionale:

Editori (codice, nome, indirizzo, citta)
Librerie (codice, nome, indirizzo, citta)
Autori (nome, nascita, morte*, nazione)
Pubblicazioni (codice, titolo, data stampa, autore (fk), editore(fk))
Giacenze (libreria (fk), pubblicazione (fk), copie disponibili)
Vendite(libreria (fk), pubblicazione (fk), data, copie vendute)

Estrarre i nomi degli editori le cui pubblicazioni sono disponibili solo nelle librerie della stessa città dell’editore.

Riporto di seguito come ho risolto io:

select e.nome
from editori as e librerie as l, pubblicazioni as p, giacenze as g
where (e.citta = l.citta and
e.codice = p.editore and
g.libreria = l.codice and
g.pubblicazione = p.codice and
g.copie_disponibili is not null)
order by e.nome
group by e.nome;

Il problema è che con il mio codice ottengo gli editori che hanno almeno una pubblicazione disponibile nella loro città, al contrario di quello che viene richiesto, ovvero che le pubblicazioni siano disponibili solo nella loro città, non so come fare proprio a livello logico (stupido me ), qualcuno riesce a darmi una mano molto gentilmente?

Grazie in anticipo

Update: nell'attesa di una risposta ho provato a risolvere cosi (ma non so se sia corretto dato che mi mancano gli attributi che compongono la base di dati):

select e.nome
from editori as e, librerie as l, giacenze as g, pubblicazioni as p
except
select e.nome
from editori as e
where e.nome not in (select nome
from editori as e, librerie as l
where e.citta = l.citta)
gruop by e.nome
having (e.codice = p.codice and
g.librerie = l.codice and
g.pubblicazione = p.codice and
g.copie_disponibili is not null)
order by e.nome;

2 Risposte

  • Re: Query di selezione

    aldorenati ha scritto:


    Editori (codice, nome, indirizzo, citta)
    Librerie (codice, nome, indirizzo, citta)
    Autori (nome, nascita, morte*, nazione)
    Pubblicazioni (codice, titolo, data stampa, autore (fk), editore(fk))
    Giacenze (libreria (fk), pubblicazione (fk), copie disponibili)
    Vendite(libreria (fk), pubblicazione (fk), data, copie vendute)
    Hai creato tu questa struttura tabelle?
    Se Benni, Forattini, Pillinini scrivono una Pubblicazione insieme quale dei tre figura come FK in Pubblicazione?
    Forse Giacenze deve essere il risultato di una query e non una tabella.

    Titolo "Query di estrazione". In Access non esiste con questo nome. Si chiama "query di selezione".
  • Re: Query di selezione

    No non l'ho scritto io è una vecchia prova d'esame fornita dal mio professore. Giacenze mi è stata fornita così, per il titolo ho corretto
    In quanto alla tua domanda ne so quanto te il testo l'ho riportato tutto tale e quale, se è un errore possiamo assumere che una pubblicazione sia scritta da un solo autore.
Devi accedere o registrarti per scrivere nel forum
2 risposte