Confronta due stringhe

di il
5 risposte

Confronta due stringhe

Salve ragazzi

mi servirebbe una mano per venire a capo ad un grosso problema

io ho due tabelle, una con le società fatta in questo modo

Nome società
----------------------------------------------------------
Pippo s.p.a
---------------------------------------------------------
Qui Quo Qua S.R.L
--------------------------------------------------------
Pluto & Paperino S.r.l.s
----------------------------------------------------------
Pippo s.p.a Filiare Paperopoli
---------------------------------------------------------
Qui quo Qua S.R.L. Topolinia

ed un altra fatta in questo modo

codice| lista regioni sociali
-----------------------------------------
01 | S.P.A. - S.A.P.A
----------------------------------------
02 | S.R.L - S.r.l.u - S.r.l.s
-------------------------------------------
03 |S.S. - S.n.c.
-----------------------------------------
04 | S.a.s

io vorrei creare una tabella fatta in questo modo:

Nome società | codice
---------------------------------------------------
Pippo s.p.a | 01
-----------------------------------------------------
Qui Quo Qua S.R.L | 02
--------------------------------------------------------
Pluto & Paperino S.r.l.s | 02
----------------------------------------------------------
Pippo s.p.a Filiare Paperopoli | 01
---------------------------------------------------------
Qui quo Qua S.R.L. Topolinia |02

qualcuno potrebbe aiutarmi ad ottenere il risultato voluto?

5 Risposte

  • Re: Confronta due stringhe

    Non c'è un campo comune che leghi le due tabelle, quindi è impossibile quello che chiedi.
  • Re: Confronta due stringhe

    Quello che vuoi non si fa confrontando stringhe di descrizioni di due tabelle. Niente di più contorto e sbagliato.

    Lo strumento standard è un campo id relazionato tra le due tabelle e una query opportuna. Fa tutto il dbms.
  • Re: Confronta due stringhe

    gibra ha scritto:


    Non c'è un campo comune che leghi le due tabelle, quindi è impossibile quello che chiedi.
    si questo lo so, ma potrei creare una procedure che fa una cosa tipo questa
    
      v_key varchar2(255);
    
     CURSOR trova_simili IS
        select 
        nome_società as nome
        from tabella a;
        
        begin
        FOR i IN trova_simili
      LOOP
      
      begin
      INSERT INTO v_key
      select b.codice from(
      select b.key from tabella b where i.nome like '%?%' )
      
      insert into tabella c(nome,codice) values i.nome, v_key
      
      ecc.
      
      o comunque una cosa del genere
    
    però ci sono 2 problemi:

    1.) al posto di ? cosa ci dovrei mettere? se passo tutta la riga non va bene, dovrei trovare il modo di estrarre ad una per una le ragioni sociali e confrontarle.

    2.) mettiamo che ci riesca potrei trovare una società in tabella A che si chiama SPARANO S.R.L e quindi avrei troppi valori per v:ke(SPA e SRL)

    Se non c'è un modo più semplice io avrei pensato di fare una funzione che mi estrae ogni singola parola della società e la confronta con ogni singola parola della prima riga della tabella b se la trova prende la chiave corrispondente altrimenti passa alla seconda riga e cosi via.

    Il problema è che qui mi sono bloccato, dopo aver fatto una funzione che fa quello che voglio non riesco a proseguire.
  • Re: Confronta due stringhe

    oregon ha scritto:


    Quello che vuoi non si fa confrontando stringhe di descrizioni di due tabelle. Niente di più contorto e sbagliato.

    Lo strumento standard è un campo id relazionato tra le due tabelle e una query opportuna. Fa tutto il dbms.
    potresti farmi un esempio di come modificheresti le due tabelle per poi fare quello che voglio?

    sempre se non ti chiedo troppo
  • Re: Confronta due stringhe

    Te l'ha già indicato, ed io ti ho detto che manca:

    Devi aggiungere un campo numerico, esempio: IDTipoAzienda, in entrambe le tabelle e valorizzarlo di conseguenza.
Devi accedere o registrarti per scrivere nel forum
5 risposte