"cyber_man" <cyber_man> ha scritto nel messaggio news:257635@...
Scusami Christian ma il tuo atteggiamento è inaccettabile.
?? aspe non frainterdermi non ho usato toni antipatici o peggio maleducati, leggi le emoticons
Ti ostini a far cadare dal cielo le verità che conosci e non spieghi tecnicamente il motivo che ti ha indotto ad usarle ad un ignorante come me.
ehm veramente non c'è nulla da spiegare nello standard ansi sql non è permesso usare order by
esattamente come a scuola di hanno spiegato che un quadrato ha 4 lati
Sarai sicuramente un bravo sviluppatore ma come docente non sei granchè :-D
diciamo che non faccio la sviluppatore, inoltre se l'alievo si ostina a voler dire che un quadrato ha 3 lati non c'è docente che ne ha colpa Come docente puoi fargli capire che quello lui chiama quadrato si chiama triangolo ma nulla di più
Stavo per scrivere "Mai usato TO 100 percent!" ma invece adesso mi accorgo che se in una view specifico un ordinamento allora TOP 100 PERCENT mi viene
aggiunto automaticamente.
Non SOLO! Ma "SELECT * FROM (SELECT * FROM A ORDER BY a.a1)" da l'eerore di
cui parlate!
Strano che non me ne sia mai accrto... Allora forse non sono tante le query
dove uso ORDER BY!
idem come sopra perchè vuoi fare un ordinamento di una subquery?? Che non è permesso nello standard ansi sql
PS visto che ti ostini a pensare che il problema è di mssql ti lascio questa lettura di interbase
http://bdn.borland.com/article/0,1410,30296,00.html
Vedi che stò imparando qualcosa ?
sei sulla buona strada :-D
vediamo anche il perchè non si può fare, sei daccordo con me che odinare una subquery creerebbe un doppio ordinamento?
Quindi ritorniamo al post di Luca
Grazie Maestro Grazie... Mi Mandi la fattura ? :-D
non sono così esoso mi accontento (per ora) di una birra
Deduco quindi che per presentare una VIEW in una pagina WEB tu, al fine anche solo dell'ordinamento, passi prima da una SP.
le view non si presentano si usano internamente alle stored procedure, allora vediamo di spiegare per bene cosa sono e soprattutto a cosa servono le viste.
Il risultato di una vista è una tabella dinamica pertanto la vista viene creata per semplificare la costruzione delle query.
Per maggiori info
http://en.wikipedia.org/wiki/View_(database)
Allora deduco che se usi la SP, anche solo in alcuni casi, solo al fine dell'ordinamento sicuramente ti farebbe comodo che la VIEW potesse ritornare all'applicazione un set di dati ordinato.
allora è tutto al contrario, la vista è una tabella dinamica che ti permette di visualizzare i dati di 23 tabelle fisiche in modo semplice, pertanto la vista viene creata per velocizzare l'estrapolazione dei dati. Immagina di avere 3 tabelle fisiche (clienti, fatture, dettaglio fatture), crei 1 vista che ti restituisce i dati dalle varie tabelle.
La vista la userai per creare le seguenti stored procedure lista fatture clienti con ordinamento per ragione sociale, lista fatture clienti con ordinamento per data, ecc.
come vedi l'ordinamento sulla vista non serve a un beneamato l'unico ordinamento che ti servirà sarà nelle stored procedure.
Ma se non mi spieghi il motivo tecnico che spinge cotanti standard (ansi, mssql, oracle, db2, sybase, informix, ecc) a rendere "errato" come scrivi tu l'uso di ORDER BY io non lo capirò mai.
non sono standard ma sono diversi database server, e tutti non accettano order by nelle viste, esattamente come una figura con 4 lati uguali si chiama quadrato :-D
Tu dici che è "errato" proprio perché è uno standard ma mi sembra che sia una motivazione puerile...
una figura con 3 lati si chiama triangolo
Se SERVE, e abbiamo visto che SERVER anche a te poter far uscire da una VIEW record ordinati, ci sarà un motivo più SAGGIO che il semplice ERRORE che proponi tu.
Forse mi deve rispondere qualcuno di più preparato?
Io ignorante sono e ignorante rimango ma quando non capisco mi chiedo il perché delle cose non le prendo come oro colato.
vediamo di capirci una volta per tutte
hai 2 tabelle
clienti
fatture
con i seguenti campi (clienti.id, clienti.ragionesociale, clienti.via, clienti.localita, clienti.telefono, fatture.numero, fatture.data, fatture.importo e ovviamente fatture.idcliente)
creo una vista che prende tutti campi delle 2 tabelle e la chiamo vista1
create view vista1
as
select
clienti.id,
clienti.ragionesociale,
clienti.via,
clienti.localita,
clienti.telefono,
fatture.numero,
fatture.data,
fatture.importo
from clienti inner join fatture on clienti.id=fatture.idcliente go
ok adesso voglio il totale delle fatture per cliente e voglio i clienti in ordine crescente per ragionesociale
quindi creo una stored procedure che si appoggia alla vista vista1
create procedure totalefatturepercliente
as
select
ragionesociale,
sum(importo) as totale
from vista1
group by
ragionesociale
order by
ragionesociale
e adesso voglio la lista delle fatture ordinata per data e creo la stored procedure che si appoggia alla vista vista1
create procedure listafatture
as
select
numero,
data,
ragionesociale,
importo
from vista1
order by
data
ok ho finito se ho bisogno di altre liste creo le mie procedure che per comodità si appoggiano alla vista vista1 che mi evita di ripete i nomi dei campi, delle tabelle e i vari join.
Spero che adesso sia più chiaro, altrimenti ci troviamo al prossimo evento e ne discutiamo :-D
PS non è una minaccia ma una promessa