Logica delle query sql

di il
2 risposte

Logica delle query sql

Ho appena scoperto questo fatto se io ho

select *
from prodotti
where price=max(price) //nn si può fare perchè il dbms nn capisce a qual price mi riferisco

altro fatto se io faccio

from (select nome,price from prodotti) as x,(select nome from x)

nn riesce a riconoscere la x mi potete spiegare la logica con cui il dbms riesce e non riesce a riconoscere le tabelle

2 Risposte

  • Re: Logica delle query sql

    gaiapuffo ha scritto:


    select *from prodottiwhere price=max(price)
    SELECT *
    FROM prodotti
    WHERE (price = (SELECT MAX(price) AS Exp1 FROM prodotti AS Exp1))

    E' possibile specificare specificare un'aggregazione in una clausola WHERE solo se è inclusa in una sottoquery.

    gaiapuffo ha scritto:


    from (select nome,price from prodotti) as x,(select nome from x)
    Non ha senso quello che hai scritto! No capisco nemmeno cosa volessi fare.
  • Re: Logica delle query sql

    Ciao...
    oltre ad essere pienamente d'accordo con Trykon...

    Avevi forse intenzione di assegnare a x, tutte le colonne della tabella... come fosse un oggetto?
    Aspettandoti che x diventasse "un'istanza" della "classe" prodotti?
    Se si non è il metodo corretto e soprattutto non è lo strumento corretto...

    Puoi eventualmente creare DIRETTAMENTE una variabile tabella (SQL 2008),
    DECLARE @x TABLE (
    Id INT IDENTITY(1,1),
    nome VARCHAR(50),
    price MONEY
    )
    che puoi gestire solamente ad ogni esecuzione della SQL, come fosse una vera e propria tabella (nota la @ prima del nome della variabile).Ricorda, la creazione deve essere esplicita come l'inserimento (INSERT INTO @x (nome, price) VALUES (... ).

    Oppure puoi utilizzare tabelle temporanee (visibili anche al di fuori dell'esecuzione della query), che puoi creare brutalmente tramite una SELECT * INTO #x FROM prodotti:
    * #x --> visibile solo all'interno della tua sessione.
    * ##x --> visibile all'interno di ogni sessione (anche su macchine differenti).

    ...alla chiusura della sessione che ha creato la tabella, avrai la perdita automatica della tabella/dati temporanea.

    Se invece, da quello che ho inteso, hai intenzione di utilizzare un linguaggio ad oggetti CHE SI CONNETTE AL DB (previa acquisizione dati)... beh.. puoi con i dati in mano... puoi gestirtela come vuoi.
Devi accedere o registrarti per scrivere nel forum
2 risposte