Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25

Discussione: LEFT JOIN con WHERE

  1. #1

    LEFT JOIN con WHERE

    Ciao a tutti,

    devo visualizzare una lista di compagnie di assicurazioni presi da una tabella con accanto un textbox con dentro un valore prelevato da un'altra tabella corrispondente ad un determinato collaboratore.

    codice:
    <table border="0" width="530" id="table6" cellspacing="1" cellpadding="0" style="border: 1px solid #FF8231">
    <%
    ID = Request("ID")
    Sql = "SELECT " &_
    "TBL_Anagrafica_Compagnia.*, " &_
    "TBL_Compensi_Collaboratori.* " &_
    "FROM TBL_Anagrafica_Compagnia " &_
    "LEFT JOIN TBL_Compensi_Collaboratori " &_
    "ON TBL_Anagrafica_Compagnia.ID_Compagnia " &_
    "= TBL_Compensi_Collaboratori.ID_Compagnia " &_
    "WHERE TBL_Compensi_Collaboratori.ID_Collaboratore="&ID			
    set Rs=Conn.execute(Sql)						
    %>
    
    <% IF Not Rs.EOF THEN %>
    
    <tr>
    <td width="125" bgcolor="#FFCC00" align="center">
    <font size="1">RAGIONE SOCIALE </font></td>
    <td width="125" bgcolor="#FFCC00" align="center">
    <font size="1">INDIRIZZO </font></td>
    <td width="90" bgcolor="#FFCC00" align="center">
    <font size="1">CITTA'</font></td>
    <td width="79" bgcolor="#FFCC00" align="center">
    <font size="1">FISSO </font></td>
    <td width="79" bgcolor="#FFCC00" align="center">
    <font size="1">PERCENTUALE </font></td>
    </tr>
    							
    <% Do While not Rs.EOF %>
    
    <tr>
    <td width="125" bgcolor="#D8D8D8"><%=Rs("TXT_RagioneSociale")%></td>
    <td width="125" bgcolor="#D8D8D8"><%=Rs("TXT_Indirizzo")%></td>
    <td width="90" bgcolor="#D8D8D8"><%=Rs("TXT_Citta")%></td>
    <td width="79" bgcolor="#D8D8D8">
    <input type="text" name="Num_Fisso" size="10" tabindex="1" style="border: 1px solid #808080" value="<%=Rs("Num_Fisso")%>"></td>
    <td width="79" bgcolor="#D8D8D8">
    <input type="text" name="Num_Percentuale" size="10" tabindex="1" style="border: 1px solid #808080" value="<%=Rs("Num_Percentuale")%>"></td>
    </tr>
    
    <%
    Rs.MoveNext
    Loop
    ELSE 
    %>
    
    <tr>
    <td width="545" align="center" colspan="6">
    NESSUN RECORD TROVATO</td>
    </tr>
    
    <% END IF %>
    						
    </table>
    il problema sta nel fatto che io devo poter vedere sempre la lista completa delle compagnie, e se per quel collaboratore esiste un valore per quella compagnia me lo stampa a video su quel textbox altrimenti mi dovrebbe far vedere il textbox vuoto.

    Cosi comè la query (giustamente) mi fa vedere soltanto le compagnie che sono valorizzate dal quel collaboratore escludendomi quello vuote.

    Spero di essere stato abbastanza chiaro.

    Grazie in anticipo
    Pippo Giacalone
    giacalone@tin.it

  2. #2
    Nessuno che possa darmi un consiglio ?
    Pippo Giacalone
    giacalone@tin.it

  3. #3
    Ci provo: la tua query, senza la clausola WHERE, risponderebbe già alla tua esigenza, restituendoti TUTTI i records presenti in TBL_anagrafica_compagnia, sia che esista un collaboratore relazionato a quella compagnia, sia che costui non esista.

    La clausola WHERE restringe poi la ricerca ai dati relativi a un singolo collaboratore.

    Per stampare sempre anche i nomi delle altre compagnie, potresti provare ad eliminare la clausola WHERE e poi agire in fase di presentazione a video, dicendo per esempio (pseudo-codice da tradurre in codice)

    codice:
    - per ogni record presente nel recordset stampa:
     - tutti i campi che stampi già ora se TBL_Compensi_Collaboratori.ID_Collaboratore="&ID
     - solo il nome della compagnia, lasciando in bianco gli altri campi, per tutti gli altri records
    Per ottenere questo dovresti aggiungere all'intestazione della tabella una dicitura "nome compagnia" e ai dati che presenti un campo rs("nome_compagnia"), che dovrebbe essere già presente nel recordset, visto che estrai tutti i campi dalla tabella TBL_anagrafica_compagnia (Sql = "SELECT " &_
    "TBL_Anagrafica_Compagnia.*, ecc. ecc....)

    Naturalmente il nome del campo deve coincidere con quello, nella tabella TBL_Anagrafica_Compagnia, che contiene il nome delle compagnie...

    E' una possibile soluzione. Se vuoi, fai sapere se funziona.

    E' nato www.lombardiamotori.it

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

  4. #4
    Grazie Teorema55 per aver risposto,

    potresti per favore farmi un esempio pratico di codice ?
    Pippo Giacalone
    giacalone@tin.it

  5. #5
    potresti per favore farmi un esempio pratico di codice ?
    Chissà perchè, me lo sentivo........

    :maLOL:

    No problem.

    codice:
    <table border="0" width="530" id="table6" cellspacing="1" cellpadding="0" style="border: 1px solid #FF8231">
    <%
    ID = Request("ID")
    Sql = "SELECT " &_
    "TBL_Anagrafica_Compagnia.*, " &_
    "TBL_Compensi_Collaboratori.* " &_
    "FROM TBL_Anagrafica_Compagnia " &_
    "LEFT JOIN TBL_Compensi_Collaboratori " &_
    "ON TBL_Anagrafica_Compagnia.ID_Compagnia " &_
    "= TBL_Compensi_Collaboratori.ID_Compagnia "			
    set Rs=Conn.execute(Sql)						
    %>
    
    <% IF Not Rs.EOF THEN %>
    
    <tr>
    <td width="125" bgcolor="#FFCC00" align="center">
    <font size="1">RAGIONE SOCIALE </font></td>
    <td width="125" bgcolor="#FFCC00" align="center">
    <font size="1">INDIRIZZO </font></td>
    <td width="90" bgcolor="#FFCC00" align="center">
    <font size="1">CITTA'</font></td>
    <td width="79" bgcolor="#FFCC00" align="center">
    <font size="1">FISSO </font></td>
    <td width="79" bgcolor="#FFCC00" align="center">
    <font size="1">PERCENTUALE </font></td>
    </tr>
    							
    <% Do While not Rs.EOF 
    if rs("ID_Collaboratore")=ID then
    %>
    
    <tr>
    <td width="125" bgcolor="#D8D8D8"><%=Rs("TXT_RagioneSociale")%></td>
    <td width="125" bgcolor="#D8D8D8"><%=Rs("TXT_Indirizzo")%></td>
    <td width="90" bgcolor="#D8D8D8"><%=Rs("TXT_Citta")%></td>
    <td width="79" bgcolor="#D8D8D8">
    <input type="text" name="Num_Fisso" size="10" tabindex="1" style="border: 1px solid #808080" value="<%=Rs("Num_Fisso")%>"></td>
    <td width="79" bgcolor="#D8D8D8">
    <input type="text" name="Num_Percentuale" size="10" tabindex="1" style="border: 1px solid #808080" value="<%=Rs("Num_Percentuale")%>"></td>
    </tr>
    
    <%else%>
    <tr>
    <td width="125" bgcolor="#D8D8D8"><%=Rs("TXT_RagioneSociale")%></td>
    <td width="125" bgcolor="#D8D8D8"><%=Rs("TXT_Indirizzo")%></td>
    <td width="90" bgcolor="#D8D8D8"><%=Rs("TXT_Citta")%></td>
    <td width="79" bgcolor="#D8D8D8"></td>
    <td width="79" bgcolor="#D8D8D8"></td>
    </tr>
    <%
    end if
    
    Rs.MoveNext
    Loop
    
    ELSE 
    %>
    
    <tr>
    <td width="545" align="center" colspan="6">
    NESSUN RECORD TROVATO</td>
    </tr>
    
    <% END IF %>
    						
    </table>
    Questo nell'ipotesi che i dati ragione sociale, indirizzo, città, ecc. appartengano alla compagnia e non al collaboratore (come penso di avere capito, altrimenti ne riparliamo più tardi).

    Come vedi ho eliminato la clausola WHERE dalla query, poi ho subordinato la stampa dei dati del collaboratore alla condizione
    if rs("ID_Collaboratore")=ID
    Okkio: non è stato testato, conterrà degli errori di sicuro. Spero di non avere preso un abbaglio....

    E' nato www.lombardiamotori.it

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

  6. #6
    OK, lo provo subito... intanto grazie,
    ma non l'avevo proprio capito cosa intendevi
    Pippo Giacalone
    giacalone@tin.it

  7. #7
    teorema, cosi' facendo ammazzi il server. tiri su tutto l'archivio dei collaboratori e poi ne visualizzi solo 1.... quantomeno inefficace! io userei una union, cosi'

    query originale di peppeweb
    UNION
    SELECT elenco_campi FROM compagnie WHERE id_compagnia NOT IN (solo l'id_compagnia dalla query originale di peppeweb)


  8. #8
    Allora,

    non da errore, ma il risultato e che mi fa vedere tutte le compagnie ( anche quelle di altri collaboratori ) ma dentro il textbox non cè nessun valore
    Pippo Giacalone
    giacalone@tin.it

  9. #9
    Grazie optime ma non so praticamente come applicare il tuo consiglio
    Pippo Giacalone
    giacalone@tin.it

  10. #10
    Optime,

    una cosa del genere ?

    <%
    ID = Request("ID")
    Sql = "SELECT " &_
    "TBL_Anagrafica_Compagnia.*, " &_
    "TBL_Compensi_Collaboratori.* " &_
    "FROM TBL_Anagrafica_Compagnia " &_
    "LEFT JOIN TBL_Compensi_Collaboratori " &_
    "ON TBL_Anagrafica_Compagnia.ID_Compagnia " &_
    "= TBL_Compensi_Collaboratori.ID_Compagnia " &_
    "UNION " &_
    "SELECT " &_
    "TBL_Anagrafica_Compagnia.* " &_
    "FROM TBL_Anagrafica_Compagnia " &_
    "WHERE ID_Compagnia NOT IN = ("&ID&") "
    set Rs=Conn.execute(Sql)
    %>
    Pippo Giacalone
    giacalone@tin.it

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.