It is currently 8 June 2025, 20:27 Advanced search

operatore in

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

operatore in

Postby r.bianco » 23 May 2011, 7:31

Dalla documentazione:

Parametro "Lista": Lista di valori in cui cercare; può essere una lista valori oppure il risultato di una subquery


mi scontro spesso con queste limitazioni, sarebbe molto più semplice per noi utilizzatori avere la possibilità di usare questo operatore anche con una semplice stringa separata da ",". Sarebbe anche molto proratico poter usare, solo in questo caso, le subqry su IMDB.
only work and no play makes jack a dull boy
r.bianco
 
Posts: 4979
Joined: 8 November 2010, 16:46

Re: operatore in

Postby g.lanzi » 26 May 2011, 8:54

Per quanto riguarda la stringa separata da "," allora invece dell'operatore IN bisogna usare FIND. Ad esempio immaginiamo di voler trovare solamente i record che hanno l'ID all'interno di un elenco e di avere questo elenco in una stringa ",ID1,ID2,ID3,ID4,". Il trucco sta nell'avere sempre una virgola anche all'inizio e alla fine e usare questa clausola: where find(STRINGA,","+ID+",") > 0.

La subquery IMDB in questo caso sarebbe pratica, ma c'è da dire che per simularne il comportamento è sufficiente creare la stringa di cui sopra nell'evento di BeforeFind, o comunque prima della query.
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: operatore in

Postby r.bianco » 26 May 2011, 9:53

Interessante, grazie.
only work and no play makes jack a dull boy
r.bianco
 
Posts: 4979
Joined: 8 November 2010, 16:46

Re: operatore in

Postby d.pierangeli » 26 May 2011, 10:30

E' possibile anche utilizzare una variabile globale di tipo stringa nella IN; l'unica cosa non permessa è l'uso di una IMDB monoriga.

Nel caso di variabile globale il valore viene scritto nella query, perciò dopo averla cambiata è necessario aggiornare la query con il metodo Update Queries oppure Update Book.
User avatar
d.pierangeli
Pro Gamma
Pro Gamma
 
Posts: 8129
Joined: 30 September 2010, 15:35

Re: operatore in

Postby lucabaldini » 26 May 2011, 13:07

Puoi trovare info qui:

http://doc.progamma.com/?ARTID=955C9F9F ... D3E6A2446B

E' una funzionalità che abbiamo introdotto in 8.5.
User avatar
lucabaldini
Pro Gamma
Pro Gamma
 
Posts: 4990
Joined: 1 October 2010, 17:03
Location: Bologna

Re: operatore in

Postby r.bianco » 26 May 2011, 14:00

Una ne pensate e cento ne fate! ;)
Grazie.
only work and no play makes jack a dull boy
r.bianco
 
Posts: 4979
Joined: 8 November 2010, 16:46

Re: operatore in

Postby m.sirri » 26 May 2011, 16:04

1000 ne pensiamo e 100 ne facciamo. ;)
User avatar
m.sirri
Pro Gamma
Pro Gamma
 
Posts: 8574
Joined: 30 September 2010, 17:01
Location: Ozzano dell'Emilia (BO)

Re: operatore in

Postby fabio82 » 1 July 2011, 9:21

secondo me è scomodo non poter scrivere velocemente una query del tipo SELECT X FROM Y WHERE F1 IN ('AAA','BBB')
fabio82
 
Posts: 211
Joined: 27 May 2011, 10:38

Re: operatore in

Postby teopost » 11 July 2011, 7:21

Nota da DBA.
1. L'utilizzo di una find nella where fa si che non venga utilizzato un eventuale indice. E' da sconsigliare su tabelle grandi (Se parliamo di Oracle una tabella con un milione di record e' una tabella piccola).
1a. Il punto 1 su Oracle puo' tuttavia essere risolto con un indice di funzione.
2. Se devi fare una subquery, se possibile, evita l'utilizzo della IN ed usa la EXIST che è molto più performante. La IN finisce qundo tutta la subquery e' finita. la Exist finisce quando viene trovato il primo risultato della query.
Oracle Database Administrator
User avatar
teopost
 
Posts: 211
Joined: 26 October 2010, 20:46

Re: operatore in

Postby r.bianco » 12 July 2011, 6:34

Grazie
only work and no play makes jack a dull boy
r.bianco
 
Posts: 4979
Joined: 8 November 2010, 16:46


Return to Proposte di modifica

Who is online

Users browsing this forum: No registered users and 25 guests