algebra relazionale e carattere asterisco SQL Clicca QUI per vedere il messaggio nel forum |
nausicaa82 |
Ho la seguente base di dati:
table CITTA' (Nome PK, Regione, Abitanti)
table ATTRAVERSA (Città, Fiume)
table FIUMI (Fiume PK, Lunghezza)
Devo estrarre i nomi di tutte le città della Toscana attraversate dal fiume Arno e da un altro fiume.
In SQL farei: SELECT....... WHERE Attraversa.Fiume="Arno" AND Attraversa.Fiume=Like "*"
Va bene usare il carattere asterisco?
E in algebra relazionale cosa metto??
Grazie |
CaboM.BNA |
non c'e bisogno di utilizzare l'asterisco.
il fatto che una citta si trovi all'interno della tabella ATRAVERSA implica già che questa città sia attraversata da un fiume. [oltretutto con l'utilizzo del "*" riprenderesti di nuovo in considerazione sia il fiume Arno, che tutti gli altri...]
per risolvere la query in sql dovresti fare:
code:
(SELECT Nome
FROM CITTA, ATTRAVERSA
WHERE Regione = 'Toscana' AND Fiume = 'Arno'; )
INTERSECT
(SELECT DISTINCT Nome
FROM CITTA, ATTRAVERSA
WHERE Nome = Citta AND Regione = 'Toscana' AND ; )
La prima query ti permette di trovare tutte le citta della Toscana che sono attraversate dall'Arno.
Tramite la seconda query trovi quelle citta (della Toscana) che sono attraversata da ALMENO UN FIUME che NON è l'Arno. [la scelcta di usare distinct perche altrimenti se una citta fosse attraversata da 5 fiumi, il suo nome comparirebbe 5 volte nel risultato.]
Infine viene applicata un'intersezione tra i risultati delle 2 query. (Ossia vengono presi in considerazione solo quei risultati che soddisfano SIA la prima CHE LA SECONDA query).
:ciao: |
|
|
|