Newsgroup: it.comp.lang.delphi
Titolo: Alternativa a continue select

Vedo che si batte la fiacca... vediamo se sapete darmi una manina con questo
simpatico problema:
ho un db access (evvai), in una tabella ho i miei dati (DATI), con un
codice; questo codice punta ad un'altra tabella (CODICI), in cui ho il
codice di prima e una partita iva corrispondente, che a sua volta punta ad
un'altra tabella (ANAGRAFICA) in base appunto alla partita iva.
DATI  ----------> CODICI ----------> ANAGRAFICA
        codice             p.iva
        000XX111           01234567890
Ora, da oggi si vuole che un codice possa avere due partite iva diverse,
discriminate in base ad una data di validitŕ. Mi spiego meglio: una
corrispondenza codice->partita iva vale solo per i dati che hanno un campo
DATA fino al 08/08, dopodiché ne deve valere un'altra.
DATI  ----------> CODICI ---------> ANAGRAFICA
       codice +            p.iva
        data
      000XX111             01234567890 se data <= 07/08/03
      000XX111             09876543210 se data > 07/08/03
Spero di essere stato chiaro, non č semplicissimo da spiegare.
Capite che prima me la cavavo con una semplice join sulle 3 tabelle, ora non
posso piů, o meglio, non so se e come si puň fare una join del genere.
Quindi per adesso mi sono limitato ad aggiungere un campo DATA_FINE_VALIDITA
alla tabella CODICI e, per ogni record di DATI a fare un'SQL per vedere
qual'č la partita iva da utilizzare, ma questo rallenta spaventosamente
l'esecuzione.
Help.
--
Jax
Journeying Artificial Xenomorph

Jax wrote:
<snip>
Access non supporta le Stored, vero?
Andrea

       000XX111             09876543210 se data > 07/08/03
Spero che, visti cald&casini&stress, di aver capito bene e non aver scritto
male:
select dati.*, codici.*, anagrafica.*
where
  dati.codice = :codice
and
  codici.codice = dati.codice
and
  codici.partitaiva = anagrafica.partitaiva
and
  codici.datavalidita = :datavalidita
Bye
A

   codici.datavalidita = :datavalidita
Eh, magari... la data di validità non deve essere uguale, ma... mi hai dato
un'ottima idea. Vediamo se riesco a cavarcene fuori qualcosa...


 Access non supporta le Stored, vero?
Che io sappia no...


DATI  ----------> CODICI ---------> ANAGRAFICA
       codice +            p.iva
        data
      000XX111             01234567890 se data <= 07/08/03
      000XX111             09876543210 se data > 07/08/03
con Interbase/Firebird, scriveresti cosi' (attenzione: la query deve
funzionare anche nel caso in cui hai 3 p.iva e vuoi la 2a in ordine di
tempo!)
select first 1 b.p_iva from dati a, codici b
where a.codice=b.codice
and b.data>=:data
order by b.data desc
con Access... a te la traduzione.
Dato che sono un gentleman, ti diro' che trovo Access un eccellente
emetico...
Ciao
Duilio

 emetico...
suggerisco a tutti, in caso di stitichezza, un pomeriggio passato a fare
query con access.. la soluzione del problemuccio fisiologico e' garantita!
;)
Ciao, Sandro

 query con access.. la soluzione del problemuccio fisiologico e' garantita!
che strano!
a me basta il pensiero..... ;P
A

 un'ottima idea. Vediamo se riesco a cavarcene fuori qualcosa...
Che te frega?
Una data deve esserci, no?
Quindi presumo che in qualche modo riesci a passarla alla query.
Certo, se usassi un database invece dei giocattoli per neonati.... ;P
....ma mo so curioso!
Ci 6 riuscito o no?
A

 emetico...
Io ho risolto i miei problemi di stitichezza da quando ci lavoro, perché
dovrei cambiare? :)
Comunque purtroppo, come accade al 99%, non è stata una mia scelta, me lo
sono beccato sul groppone.
Grazie comunque per l'aiuto.


me lo sono beccato sul groppone.
ahia
Ciao
Duilio