Pagina 1 di 5 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 43
  1. #1
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802

    Flag dati se presenti in DB: problema

    Ciao a tutti,
    dopo avere sistemato il problema query, dovrei flaggare i dati estratti se presenti in altra tabella.

    Mi spiego meglio, questo è il codice che estrae i dati da 3 tabelle:

    [CODE]
    n = 0

    Set rss1_2rif = Server.CreateObject("ADODB.Recordset")

    With rss1_2rif
    .LockType = 3
    .CursorType = 3
    .CursorLocation = 3
    .ActiveConnection = conn
    .Open "SELECT strutture.struttura, strutture.IDstruttura FROM strutture LEFT JOIN rifstruttura ON rifstruttura.IDstruttura=strutture.IDstruttura LEFT JOIN rifstruttureesterne ON rifstruttureesterne.IDstrutture=strutture.IDstrutt ura where rifstruttura.IDtrattamento = '"&Cint(IDtratt)&"' OR rifstruttureesterne.IDtrattamento = '"&Cint(IDtratt)&"'"
    End With

    Do while NOT rss1_2rif.EOF

    struttura = rss1_2rif("struttura")
    IDstrutt = rss1_2rif("IDstruttura")

    %>
    <tr>
    <td height="25" valign="top"><input class="Form" name="sede<%=n%>" type="checkbox" value="<%=IDstrutt%>"></td>
    <td width="100%" height="25" valign="top"><DIV STYLE="FONT-SIZE: 11px; FONT-FAMILY: arial; color: #000000; text-align: left"><%=struttura%> <%=IDstrutt%> <%=IDstrutturasede%></div></td>
    </tr>
    <%
    rss.Close
    Set rss = Nothing
    n = n+1
    rss1_2rif.MoveNext
    Loop
    rss1_2rif.Close
    Set rss1_2rif = Nothing
    %>

    Mi crea un elenco di nomi associati a un ID chiamato IDstruttura.

    Gli stessi ID sono presenti anche nella tabella "rifsede" ma in numero variabile, poichè inseriti dall'utente.

    Mettiamo il caso che abbia 5 id totali estratti dalla query qui sopra:

    ID1, ID2, ID3, ID4, ID5

    E mettiamo il caso che la tabella rifsede contenga due ID:
    ID2, ID5

    Io devo fare in modo di flaggare gli ID estratti dalla query sopra riportata (nel nostro esempio ID1, ID2, ID3, ID4, ID5) che compaiono anche nella tabella rifsede (nel nostro caso ID2 e ID5).

    Ho provato inserendo un nuovo loop all'interno della select qui sopra scritta ma vengono ripetuti gli stessi ID estratti a seconda del numero di ID presenti in rifsede. Nel caso dell'esempio, visualizzero':

    ID1
    ID1
    ID2
    ID2
    ID3
    ID3
    ID4
    ID4
    ID5
    ID5


    Come posso risolvere?

    Grazie
    www.beppegrillo.it
    Il blog di Beppe!!

  2. #2
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802
    Sarò monotono ma se nessuno risponde:

    UP!!!
    www.beppegrillo.it
    Il blog di Beppe!!

  3. #3
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802
    Che novità che novità

    UPPETE!!
    www.beppegrillo.it
    Il blog di Beppe!!

  4. #4
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802
    manco li cani me cagano



    UPPETE!
    www.beppegrillo.it
    Il blog di Beppe!!

  5. #5
    Utente di HTML.it L'avatar di albis
    Registrato dal
    May 2002
    Messaggi
    912
    prova così

    codice:
    .Open "SELECT strutture.struttura, strutture.IDstruttura FROM strutture LEFT JOIN rifstruttura ON rifstruttura.IDstruttura=strutture.IDstruttura LEFT JOIN rifstruttureesterne ON rifstruttureesterne.IDstrutture=strutture.IDstruttura where rifstruttura.IDtrattamento = '"&Cint(IDtratt)&"' OR rifstruttureesterne.IDtrattamento = '"&Cint(IDtratt)&"' and strutture.IDstruttura in (select IDstruttura from rifsede) "
    Forza la magica ROMA

  6. #6
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802
    Non posso fare select a cascata perchè la versione di MySQL non le supporta

    www.beppegrillo.it
    Il blog di Beppe!!

  7. #7
    Utente di HTML.it L'avatar di albis
    Registrato dal
    May 2002
    Messaggi
    912
    allora prova così
    .Open "SELECT strutture.struttura, strutture.IDstruttura FROM strutture inner join rifsede on (rifsede.IDstruttura = strutture.IDstruttura) LEFT JOIN rifstruttura ON rifstruttura.IDstruttura=strutture.IDstruttura LEFT JOIN rifstruttureesterne ON rifstruttureesterne.IDstrutture=strutture.IDstrutt ura where rifstruttura.IDtrattamento = '"&Cint(IDtratt)&"' OR rifstruttureesterne.IDtrattamento = '"&Cint(IDtratt)&"' "
    Forza la magica ROMA

  8. #8
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802
    Si, ora i dati me li visualizza ma vi estrae l'esatto opposto, ovvero solo i dati presenti in rifsede. Io invece devo estrarre i dati da rifstrutture e rifstruttureesterne che non coincido con gli ID presenti in rifsede.
    www.beppegrillo.it
    Il blog di Beppe!!

  9. #9
    Utente di HTML.it L'avatar di albis
    Registrato dal
    May 2002
    Messaggi
    912
    allora prova così

    .Open "SELECT strutture.struttura, strutture.IDstruttura FROM strutture left join rifsede on (rifsede.IDstruttura = strutture.IDstruttura) LEFT JOIN rifstruttura ON rifstruttura.IDstruttura=strutture.IDstruttura LEFT JOIN rifstruttureesterne ON rifstruttureesterne.IDstrutture=strutture.IDstrutt ura where rifsede.IDstruttura is null and ( rifstruttura.IDtrattamento = '"&Cint(IDtratt)&"' OR rifstruttureesterne.IDtrattamento = '"&Cint(IDtratt)&"' ) "
    Forza la magica ROMA

  10. #10
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802
    Ci stiamo avvicinando ma ancora non è corretto. Ora ho 3 record di prova e con due mi visualizza i dati corretti, con l'altro no. Specifico che rifstruttura non ha mai campi vuoti e deve avere per forza un solo ID; rifstruttureesterne invece puo essere senza ID, con uno o piu di uno; rifsede idem come rifstruttura. Gli ID presenti in rifstruttura non saranno mai presenti in rifstruttureesterne mentre in rifsede possono esserci ID uguali a quelli inseriti in rifstruttura e rifstruttureesterne

    Nei casi in cui la select ha funzionato, mi trovo:

    primo caso:
    rifstruttureesterne.IDstrutture 89 e 85 (quindi due record)
    rifstruttura.IDstruttura 81
    rifsede.IDstruttura 81 e 85

    Il risultato è giustamente l'ID 89


    secondo caso:
    rifstruttureesterne.IDstrutture 82 e 88 (quindi due record)
    rifstruttura.IDstruttura 86
    rifsede.IDstruttura 86 e 82

    Il risultato è giustamente l'ID 88

    terzo caso, quello che non funziona:
    rifstruttureesterne.IDstrutture 82 (quindi un solo record)
    rifstruttura.IDstruttura 84
    rifsede.IDstruttura 84

    Il risultato è nulla mentre dovrebbe visualizzarmi l'ID 82. Ci deve essere ancora qualche cosina che non permette la visualizzazione corretta dei dati.

    Mi sembra la storia infinita, risolvi da una parte e ti da problemi dall'altra. Ci stiamo avvicinando alla soluzione però.
    www.beppegrillo.it
    Il blog di Beppe!!

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.