It is currently 7 June 2025, 22:38 Advanced search

Rendere visibili gli alias nelle query

Questo forum è nato con lo scopo di raccogliere le proposte di modifica di Instant Developer e discuterne insieme.

Rendere visibili gli alias nelle query

Postby mtozzi » 6 May 2011, 6:30

Capita spesso di avere campi con lo stesso nome in diverse tabelle, quando si scrive una query che coinvolge tabelle con campi aventi lo stesso nome (specie nelle subquery) è facile sbagliare la referenza in quanto non sono mostrati gli alias e la tabella di appartenenza del campo si vede solo in fase di editing con l'intellisense. Propongo di rendere visibili nel visual code gli alias utilizzati poi effettivamente nelle query sql generate in modo da rendere evidente l'appartenenza del campo e ridurre notevolmente la possibilità di sviste.
mtozzi
 
Posts: 413
Joined: 2 November 2010, 9:33

Re: Rendere visibili gli alias nelle query

Postby g.lanzi » 15 May 2011, 21:38

Non ho capito esattamente il caso in cui il nome del campo è ambiguo. Potresti mandarmi un progettino semplice con la replica dell'esatta ominimia?
Mi piacerebbe capire e risolvere il problema.
Giuseppe Lanzi
Director of Support services
Pro Gamma S.p.A.
User avatar
g.lanzi
Pro Gamma
Pro Gamma
 
Posts: 3504
Joined: 29 September 2010, 10:24
Location: Bologna

Re: Rendere visibili gli alias nelle query

Postby mtozzi » 16 May 2011, 6:19

Nel progetto allegato ho messo un esempio di query nella procedura Esempio. Cmq per spiegarmi meglio se nella clausola select può essere in molti casi indifferente selezionare campi con lo stesso nome da una tabella piuttosto che da un'altra (quando ci interessa ad esempio fare un join naturale), lo stesso non vale ad esempio quando si utilizzano tali campi in subquery (come quella nell'esempio) dove al contrario è importante riferirsi ad una tabella specifica.
Attachments
Esempio.zip
Progetto di esempio
(336.85 KiB) Downloaded 342 times
mtozzi
 
Posts: 413
Joined: 2 November 2010, 9:33

Re: Rendere visibili gli alias nelle query

Postby g.lanzi » 9 June 2011, 21:05

Ma il caso che citi non è ambiguo. Nella delete non è messo l'alias nella where clause perché nella from list hai solo SEUSERFUNZIONI, invece nella subquery, dove puoi accedere a campi da SEUSERFUNZIONI e anche da SEFUNZIONI, allora compare l'alias e scegliendo un campo vedi scritto SEFUNZIONI.CDAPPLICAZIONE.

Il campo SEFUNZIONI.CDFUNZIONE non è richiamabile nella where clause perché non è in contesto. Se avessi più tabelle (e ovviamente non fosse una delete) comparirebbe l'alias.
Giuseppe Lanzi
Director of Support services
Pro Gamma S.p.A.
User avatar
g.lanzi
Pro Gamma
Pro Gamma
 
Posts: 3504
Joined: 29 September 2010, 10:24
Location: Bologna

Re: Rendere visibili gli alias nelle query

Postby mtozzi » 10 June 2011, 6:24

In fase di editing so che e' visibile la tabella a cui il campo si riferisce (come dicevo nel primo post). La mia richiesta era quella di renderli visibili anche nel visual code una volta terminato l'editing.
riferendomi all'esempio, ora la query si vede così:
Code: Select all
delete from SEUSERFUNZIONI
where
  CDSOGGETTO=123
  CDFUNZIONE in subquery
    select
      CDFUNZIONE
    from
      SEFUNZIONI//master table
    where
      SEFUNZIONI.CDAPPLICAZIONE="AAA"


In questo modo leggendo la query non so a quale delle due tabelle si riferisce il campo CDFUNZIONE della subquery. Quindi ripeto: ok che mentre scrivo vedo a quale tabella si riferisce ma in questo modo (parlo per esperienza personale) è molto semplice sbagliare selezionando il campo dalla tabella sbagliata visto che un volta premuto "invio" questa informazione diventa invisibile (posso solo andare ad analizzare il codice generato).
mtozzi
 
Posts: 413
Joined: 2 November 2010, 9:33

Re: Rendere visibili gli alias nelle query

Postby a.maioli » 10 June 2011, 8:02

Nell'esempio che esponi, secondo me è giusto che venga mostrato così, se nella subquery il campo CDFUNZIONE è quello della tabella della subquery, SEFUNZIONI. Se invece ci si riferisce al campo CDFUNZIONE della tabella esterna, dovrebbe vedersi come SEUSERFUNZIONI.CDFUNZIONE, proprio per evitare ambiguità ed evidenziare che è qualcosa di esterno alla subquery.
Questo è un miglioramento che si può implementare.
User avatar
a.maioli
Pro Gamma
Pro Gamma
 
Posts: 1090
Joined: 29 September 2010, 12:47


Return to Proposte di modifica

Who is online

Users browsing this forum: No registered users and 8 guests