Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117

    problema incolonnamento di due tabelle...

    Ciao a tutti, avrei bisogno di un suggerimento per realizzare una query

    ho queste due tabelle

    tabella anagrafica:

    campo1
    campo2
    campoX
    cod_caratteristica
    valore_caratteristica


    tabella caratteristiche:

    codice_caratteristica
    descrizione_caratteristica


    esempio

    tabella anagrafica:
    aa-bb-cc-01-1000
    cc-dd-aa-01-150
    ss-aa-cc-02-250
    aa-dd-qq-03-4500
    rr-tt-qq-03-4500


    tabella caratteristiche:
    01-caratteristica1
    02-caratteristica2
    03-caratteristica3


    io visualizzare i dati in questo modo:

    campo1 - campo2 - campoX - caratteristica1 - caratteristica2 - caratteristica3 (...elenco caratteristiche della tabella caratteristiche...)

    ... visualizzando il valore sotto la caratteristica corrispondente

    aa-bb-cc-1000 (1000 sotto la colonna caratteristica 1)
    cc-dd-aa-150 (1500 sotto la colonna caratteristica 1)
    ss-aa-cc-250 (250 sotto la colonna caratteristica 2)
    aa-dd-qq-4500 (4500 sotto la colonna caratteristica 3)


    Come posso fare??

    Grazie per l'aiuto!!!

  2. #2
    ma ogni rs puo avere piu caratteristiche associate?

  3. #3
    intanto prova questo, spero di non aver fatto errori di sintassi. cambia le parti che devi cambiare (come CONNESSIONE sostiuiscila con una variabile di connessione appropriata)

    codice:
    <%
    
    sql="select t1.campo1 as campo1,t1.campo2 as campo2,t1.campoX as campoX,t1.cod_caratteristica as codice,t1.valore_caratteristica as valore"
    sql=sql & " t2.descrizione_caratteristica as descr from tabella_anagrafica t1, tabella_descrizione t2 where t1.cod_caratteristica=t2.cod_caratteristica"
    
    set rs=server.CreateObject("adodb.recordset")
    rs.open sql, CONNESSIONE,3,3
    
    'conto i record trovati
    dim TOT
    
    TOT=0
    while not rs.eof
    TOT=TOT+1
    rs.movenext
    wend
    
    if TOT<>0 then
    
    sql="select count(*) from tabella_caratteristiche group by codice_caratteristica"
    set rs1=CONNESSIONE.execute(sql)
    
    if not rs1.eof then
    TOT_C=rs1(0)
    end if
    
    rs1.close : set rs1=nothing
    
    redim arrayRs(TOT,TOT_C)
    
    rs.movefirst
    i=0
    while not rs.eof
    
    for j=0 to TOT_C
    
    if cint(rs("codice"))=j then
    arrayRs(i,j)=rs("valore")
    else
    arrayRs(i,j)=""
    end if
    
    next
    i=i+1
    rs.movenext
    wend
    
    
    'stampo la tabella
    %>
    
    <table width="100%" cellpadding="0" cellspacing="0" border="0">
    
    
    <tr>
    <td>Primo Campo</td>
    <td>Secondo Campo</td>
    <td>Campo X</td>
    
    <%
    for j=0 to TOT_C
    %>
    <td>Caratteristica <%= j+1 %></td>
    <%next%>
    
    </tr>
    
    <%
    i=0
    rs.movefirst
    while not rs.eof
    %>
    
    <tr>
    
    <td><%= rs("campo1")%></td>
    <td><%= rs("campo2")%></td>
    <td><%= rs("campoX")%></td>
    
    <%
    for j=0 to TOT_C
    %>
    <td><%=arrayRs(i,j)%></td>
    <%next%>
    </tr>
    
    <%
    i=i+1
    rs.movenext
    wend
    %>
    
    </table>
    
    <%
    end if
    %>

  4. #4
    Una paginetta che fa al caso tuo (modifica, naturalmente, la stringa di connessione) potrebbe essere:

    codice:
    <%@LANGUAGE="VBSCRIPT"%>
    <html>
    <head>
    <title>Documento senza titolo</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    <body>
    <%
    cString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/mdb-database/forum_prova.mdb") 
    Set CONNESSIONE=Server.CreateObject("ADODB.Connection")
    CONNESSIONE.Open cstring
    
    sql = "select * from anagrafica"
    
    set rs=server.CreateObject("adodb.recordset")
    rs.open sql, CONNESSIONE,3,3
    
    if not rs.eof then
    
    %>
    <table border='1' cellspacing='1' cellpadding='1' width="90%">
    
    <tr>
    
    <td>Campo1</td>
    <td>Campo2</td>
    <td>Campox</td>
    <td>Caratteristica1</td>
    <td>Caratteristica2</td>
    <td>Caratteristica3</td>
    
    </tr>
    <tr><td colspan="6"></td></tr>
    
    <%
    do until rs.eof
    
    campo1 = rs("campo1")
    campo2 = rs("campo2")
    campox = rs("campox")
    cod_caratteristica = rs("cod_caratteristica")
    valore_caratteristica = rs("valore_caratteristica")
    
    %>
    
    <tr>
    
    <td><%=campo1%></td>
    <td><%=campo2%></td>
    <td><%=campoX%></td>
    <td>
    <%
    if cod_caratteristica = "01" then
    response.write(valore_caratteristica)
    else
    response.write("")
    end if
    %>
    </td>
    <td>
    <%
    if cod_caratteristica = "02" then
    response.write(valore_caratteristica)
    else
    response.write("")
    end if
    %>
    </td>
    <td>
    <%
    if cod_caratteristica = "03" then
    response.write(valore_caratteristica)
    else
    response.write("")
    end if
    %>
    </td>
    
    </tr>
    
    <%
    rs.movenext
    loop
    %>
    
    </table>
    
    <%
    end if
    
    
    rs.close
    set rs = nothing
    
    CONNESSIONE.close
    set CONNESSIONE = nothing
    %>
    
    </body>
    </html>
    Puoi vederne l'output qui

    Lo script è ritagliato sul caso specifico, e questo non è un pregio.......per generalizzare si potrebbe fare una query di inner join, tipo

    sql = "select anagrafica.*, caratteristiche.descrizione_caratteristica from caratteristiche inner join anagrafica on anagrafica.cod_caratteristica = caratteristiche.codice_caratteristica"
    in modo, poi, da intestare le colonne caratteristica1, caratteristica2 ecc. della tabella con la relativa descrizione contenuta nel database (o con una sua abbreviazione.......) e da inserire i valori nelle celle con un ciclo che tenga conto della relazione tra le due tabelle.......



    Non dimenticare, Santino, di chiudere e distruggere i recordset!
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  5. #5
    si è vero me ne ero scordato di chiudere il recordset....solo che alle 2 di notte già è un miracolo che pensassi

  6. #6
    alle 2 di notte già è un miracolo che pensassi
    :maLOL:
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

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.