Domanda banale su query

martedì 12 maggio 2009 - 11.04

squilibrio Profilo | Expert

Scusate, esercizio semplice, voi come rispondereste questa domanda


Doc(Coddoc, Cognome, Nome, Qualifica, Coddip, Codfac)
Dip(Coddip, Descrizione, Indirizzo, Coddirettore)
F(Codfac, Descrizione, Indirizzo)
quale testo bisogna inserire al posto di xxx nel programma:
SELECT F.Descrizione, Dip.Descrizione, Dip.Indirizzo
FROM F, Doc, Dip
WHERE Doc.Codfac=F.Codfac
AND Doc.Coddip=Dip.Coddip
AND F.Indirizzo=Dip.Indirizzo
AND F.Indirizzo xxx;
per ottenere nome F , nome Dip e indirizzo quando F e Dip hanno lo stesso indirizzo e tale indirizzo ha 10 caratteri?

lbenaglia Profilo | Guru

>Scusate, esercizio semplice, voi come rispondereste questa domanda
Posta un esempio completo (CRREATE TABLE, INSERT INTO e result set desiderato con quei dati) e saremo felici di rispondere.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

squilibrio Profilo | Expert

Il problema è che si tratta di una domanda trovata in un esercizio, non capisco nemmeno io il senso di quel "10 caratteri"

lbenaglia Profilo | Guru

>Il problema è che si tratta di una domanda trovata in un esercizio,
>non capisco nemmeno io il senso di quel "10 caratteri"
Il problema non è nei "10 caratteri" quanto nella tua frase "nome F , nome Dip " dato che "nome" non esiste come colonna in nessuna delle tabelle (ad esclusione della prima).
Ora, riporta per filo e per segno il testo dell'esercizio...

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

squilibrio Profilo | Expert

Docente(Coddoc, Cognome, Nome, Qualifica, Coddip, Codfac)
Dipartimento(Coddip, Descrizione, Indirizzo, Coddirettore)
Facoltà(Codfac, Descrizione, Indirizzo)
quale testo bisogna inserire al posto di xxx nel programma:
SELECT Facoltà.Descrizione, Dipartimento.Descrizione, Dipartimento.Indirizzo
FROM Facoltà, Docente, Dipartimento
WHERE Docente.Codfac=Facoltà.Codfac
AND Docente.Coddip=Dipartimento.Coddip
AND Facoltà.Indirizzo=Dipartimento.Indirizzo
AND Facoltà.Indirizzo xxx;
per ottenere nome facoltà , nome dipartimento e indirizzo quando facoltà e dipartimento hanno lo stesso indirizzo e tale indirizzo ha 10 caratteri?

nome da riferimento a Decrizione sia di Dipartimento che di Facolta

lbenaglia Profilo | Guru

>Docente(Coddoc, Cognome, Nome, Qualifica, Coddip, Codfac)
>Dipartimento(Coddip, Descrizione, Indirizzo, Coddirettore)
>Facoltà(Codfac, Descrizione, Indirizzo)
>quale testo bisogna inserire al posto di xxx nel programma:
>SELECT Facoltà.Descrizione, Dipartimento.Descrizione, Dipartimento.Indirizzo
>FROM Facoltà, Docente, Dipartimento
>WHERE Docente.Codfac=Facoltà.Codfac
>AND Docente.Coddip=Dipartimento.Coddip
>AND Facoltà.Indirizzo=Dipartimento.Indirizzo
>AND Facoltà.Indirizzo xxx;
>per ottenere nome facoltà , nome dipartimento e indirizzo quando
>facoltà e dipartimento hanno lo stesso indirizzo e tale indirizzo
>ha 10 caratteri?

Io prima di tutto suggerirei al tuo prof di aggiornare la sintassi utilizzata per simulare una operazione di JOIN tra le tabelle, dato che ormai la maggior parte dei DBMS che aderiscono allo standard ANSI SQL supportano almeno la versione 92 (del 1992!!) che offre nativamente l'operatore JOIN, in modo da distinguere le relazioni logiche tra tabelle dai criteri di ricerca.
Per quanto riguarda "tale indirizzo ha 10 caratteri" io applicherei una funzione che calcoli la lunghezza della stringa come ad esempio la funzione LEN():

SELECT F.Descrizione , DO.Descrizione , DO.Indirizzo FROM Facoltà AS F INNER JOIN Docente AS DO ON F.Codfac = DO.Codfac INNER JOIN Dipartimento AS DI ON DO.Coddip = DI.Coddip WHERE F.Indirizzo = D.Indirizzo AND LEN(F.Indirizzo) = 10;

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

squilibrio Profilo | Expert

Grazie per l'aiuto!!!

Anche io sono rimasto basito quando ho visto quelle where!!

Grazie
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5