Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26
  1. #1
    Moderatore di Annunci siti web L'avatar di Cesar
    Registrato dal
    Dec 2001
    Messaggi
    3,446

    Selezione su diverse tabelle

    Ciao a tutti,
    (scusate il titolo… non sapevo cosa mettere )
    Allora ho il seguente problema da risolvere:
    io ho tre tabelle:


    - tabella anagrafica (anagrafica clienti)
    composta da:
    codice cliente
    nome cliente

    - tabella contratti (contratti clienti)
    codice cliente
    codice contratto (numeri univoci e progressivi)

    - tabella rinnovi (dove ci sono i contratti dei clienti con il prezzo di ogni contratto)
    codice contratto (numeri univoci e progressivi)
    prezzo contratto


    Io praticamente devo prendere tutti i clienti, e per ogni cliente devo assegnarli i suoi contratti (attenzione: un cliente può avere più contratti) e mostrarli a video.

    Come devo procedere secondo voi?
    mi potete aiutare con esempi ? grazie.


  2. #2
    1. Non usare spazi vuoti nei nomi delle tabelle e dei campi.
    2. Usa una query che metta in JOIN le tre tabelle.
    3. Mi pare che la tabella dei rinnovi sia superflua visto che il campo prezzo contratto puoi integrarlo nella tabella contratti. Visto che il campo comune tra le due tabelle è codice contratto ed in entrambe le tabelle è univoco e progressivo non ha senso tenere 2 tabelle distinte.

  3. #3
    Moderatore di Annunci siti web L'avatar di Cesar
    Registrato dal
    Dec 2001
    Messaggi
    3,446
    Originariamente inviato da Mems
    1. Non usare spazi vuoti nei nomi delle tabelle e dei campi.
    Non uso nessun spazio vuoto nel nome delle tabelle

    Originariamente inviato da Mems
    2. Usa una query che metta in JOIN le tre tabelle.
    Mi servirebbe un esempio.

    Originariamente inviato da Mems
    3. Mi pare che la tabella dei rinnovi sia superflua visto che il campo prezzo contratto puoi integrarlo nella tabella contratti. Visto che il campo comune tra le due tabelle è codice contratto ed in entrambe le tabelle è univoco e progressivo non ha senso tenere 2 tabelle distinte.
    Una piccola dimenticanza mia: non posso assolutamente modificare il db. Il db è un gestionale molto complesso (uno dei più grandi in italia).

  4. #4
    tabella anagrafica
    codice cliente

    non ci sta uno spazio vuoto nel mezzo o no?

    codice:
    sql = "SELECT A.[nome cliente], C.[codice contratto] FROM [tabella anagrafica] A INNER JOIN [tabella contratti] B ON B.[codice cliente] = A.[codice cliente] INNER JOIN [tabella rinnovi] C ON C.[codice contratto] = B.[codice contratto]"

  5. #5
    Moderatore di Annunci siti web L'avatar di Cesar
    Registrato dal
    Dec 2001
    Messaggi
    3,446
    Originariamente inviato da Mems
    tabella anagrafica
    codice cliente

    non ci sta uno spazio vuoto nel mezzo o no?

    codice:
    sql = "SELECT A.[nome cliente], C.[codice contratto] FROM [tabella anagrafica] A INNER JOIN [tabella contratti] B ON B.[codice cliente] = A.[codice cliente] INNER JOIN [tabella rinnovi] C ON C.[codice contratto] = B.[codice contratto]"
    ho fatto così:


    codice:
    SELECT anagra.an_descr1, anagra.an_conto FROM anagra INNER JOIN nncontrans ON nncontrans.nnc_conto= anagra.an_cont INNER JOIN nnrinnovi ON nnrinnovi.nnr_numcontr = nncontrans.nnr_numcontr
    ma mi da come errore:

    Microsoft JET Database Engine (0x80040E14)
    Errore di sintassi (operatore mancante) nell'espressione della query 'nncontrans.nnc_conto= anagra.an_cont INNER JOIN nnrinnovi ON nnrinnovi.nnr_numcontr = nncontrans.nnr_numcontr'

  6. #6
    Originariamente inviato da Cesar
    Il db è un gestionale molto complesso (uno dei più grandi in italia).
    in access? ma mi facci il piacere

    se così è, perché non ti progetti la query direttamente dentro access?

  7. #7
    Vediamo il codice completo?

  8. #8
    Moderatore di Annunci siti web L'avatar di Cesar
    Registrato dal
    Dec 2001
    Messaggi
    3,446
    Originariamente inviato da optime
    in access? ma mi facci il piacere

    se così è, perché non ti progetti la query direttamente dentro access?
    Per diversi “problemi” di retrocompatibilità è stato fatto usando le tabelle allegate di access con sql server.

    Originariamente inviato da Mems
    Vediamo il codice completo?
    nulla di particolare...

    codice:
    <%
    	Set Conn = Server.CreateObject("ADODB.Connection")
    	Conn.Open = ("Provider = Microsoft.Jet.OLEDB.4.0; Data Source =" & Server.MapPath("/prova1.mdb"))
    
    	Set rs = Server.CreateObject("ADODB.Recordset")
    	
    	SQL = "SELECT anagra.an_descr1, anagra.an_conto FROM anagra INNER JOIN nncontrans ON nncontrans.nnc_conto= anagra.an_cont INNER JOIN nnrinnovi ON nnrinnovi.nnr_numcontr = nncontrans.nnr_numcontr"
    
    	rs.open SQL, Conn, 3, 3
    	
    
    	
    	If rs.Eof=True or rs.Bof=True then 
    		Response.Write "
    
    Nessun risultato trovato</P>" 
    	Else 
    
    	
    	
    	Do While NOT RS.EOF
    	
    		if Not rs.EOF then
    
    			response.Write "prova:" & azienda & "
    "
    			
    			rs.MoveNext 
    		end if 
    	
    	loop 
    
    	End if 
    	
    	
    	rs.close
    	set rs = nothing
    	
    	Conn.close
    	set conn = nothing
    	%>

  9. #9
    Per me la sintassi è corretta.
    Vediamo cosa dice il Dott. Optime.

  10. #10
    Originariamente inviato da Mems
    Per me la sintassi è corretta.
    Vediamo cosa dice il Dott. Optime.
    quello che ho detto prima. va provata *dentro* access. potrebbe esserci un nome campo digitato male, o un nome tabella.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.