Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    168

    [MySQL] problema ciclo for

    Ciao ragazzi, ho due tabelle
    a (id, nome_campo) e
    b (ide, nome_campo),
    dove id e ide sono identificativi univoci che conteggiano il numero di righe di ciascuna tabella.
    Devo calcolare la formula

    sqrt(pow((a.nome_campo-b.nome_campo),2))

    tra il primo records di b e tutti i records di a, poi tra il secondo records di b e e tutti i records di a; poi tra il terzo records di b e tutti i records di a e così via..fino a quando si giunge all'ultimo record di b.
    Supponendo che la tabella a abbia 40 records e la tabella b abbia 30 records ho pensato di realizzare ciò col ciclo for ma ci riesco solo in parte, nel seguente modo:

    codice:
    create procedure calcolo()
    BEGIN 
     DECLARE id INT; 
     SET id = 1;
     loop_label: LOOP 
     select ide, sqrt(pow((a.nome_campo-b.nome_campo),2)) as risultato
    from nome_tabella1 as a, nome_tabella2 as b
    where id=1 and ide=1; 
      SET id = id + 1; 
       IF id= 40 THEN 
        LEAVE loop_label; 
       END IF; 
     END LOOP; 
    END
    In questo modo ottengo 40 risultati (cioè l'applicazione della formula tra il primo records di b e tutti i records di A). Dovrei ciclare però anche sulla variabile ide per fare in modo che ciò avvenga, considerando il secondo record di b, e così via..
    Non so se è chiaro.
    Potete aiutarmi?

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922

    Re: [MySQL] problema ciclo for

    Originariamente inviato da lilux

    Devo calcolare la formula

    sqrt(pow((a.nome_campo-b.nome_campo),2))
    Ma non è lo stesso di a.nome_campo-b.nome_campo visto che prima elevi al quadrato e poi ne estrai la radice quadrata?

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    168
    si, in effetti ho saltato un pezzo:

    sqrt(pow((a.nome_campo-b.nome_campo),2) + pow((a.nome_campo1-b.nome_campo1),2))

    ma tanto non è la formula il mio problema!

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922

    Re: [MySQL] problema ciclo for

    Fai prima a postare un dump delle due tabelle e il risultato atteso.

  5. #5
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    a me sembra una banale cross join

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    168
    Originariamente inviato da luca200
    a me sembra una banale cross join
    e cioè? Potresti farmi vedere come dovrei scriverla?

  7. #7
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    select (formula)
    from a, b

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    168
    E non credo..ci vuole necessariamente un ciclo for annidato (che non so realizzare) altrimenti non puoi esprimere il modo con il quale deve essere calcolata la formula (spiegato nel primo post).

  9. #9
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Scusa, tu hai detto di avere 40 righe in una tabella e 30 nell'altra, e vuoi 1200 righe di risultato. E' così o no?

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    168
    si

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.