recuperare dati identici su record con ID diverso
maxpe non è online. Ultima attività: 14/07/2008 4.07.35maxpe
Inserito il: 05 luglio 2008 10.39
6 messaggi dal 11 dic 2007 Istalla Microsoft Silverlight!
Salve a tutti! Avrei bisogno di aiuto perchè non riesco a verire a capo di un problemino con una query.
Ho un database access con la tabella tGiocatori nella quale ho vari campi (relativi a dei giocatori di calcio). Ogni giocatore puo' essere presente con piu' record (quindi piu' 'ID) tanti quante sono le stagioni che ha militato nella mia squadra di calcio.
Dal Database estraggo la lista dei giocatori ordinati per stagione con relativo link che rimanda alla pagina calciatori_dati.asp che visualizza i dettagli del singolo calciatore.
FIN QUI TUTTO OK.
Il problema che non risco a risolvere è richiamare nella pagina calciatori_dati.asp l'elenco delle eventuali altre stagioni in cui il calciatore ha militato.
Per risolvere problemi vari ho pensato ad un include che richiama il codice qui sotto.
Mi aiutate??? ho fatto migliaia di prove con LIKE, =, request.queryString e altro ma sono evidentemente limitato dall'ignoranza.
Come posso fare a recuperare nome e cognome uguali ma con un ID diverso?

i vari test hanno evidenziato che il problema è nelle variabili che non vengono passate. E' la logica o errore di script?


<%
Dim rsGIOCA, strSQLGIOCA, strConnGIOCA, giocatore_id, cognome, nome
giocatore_id = request.queryString("id")
cognome = request.queryString("giocatore_cognome")
nome = request.queryString("giocatore_nome")

strSQLGIOCA="SELECT * FROM tGiocatori WHERE giocatore_cognome LIKE 'cognome' and giocatore_nome LIKE 'nome'"
strConnGIOCA = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("../../mdb-database/campionato.mdb")&";Persist Security Info=False"
Set rsGIOCA = Server.CreateObject("ADODB.Recordset")
rsGIOCA.Open strSQLGIOCA, strConnGIOCA
WHILE NOT rsGIOCA.EOF AND NOT rsGIOCA.BOF
cognome=rsGIOCA("giocatore_cognome")
nome=rsGIOCA("giocatore_nome")
stagione=rsGIOCA("stagione")
vis="<a href=calciatori_dati.asp?view=Display&ID="&rsGIOCA("giocatore_id")&">"&rsGIOCA("giocatore_cognome")&"</a>"
response.write" " & vis & " " & nome & " " & "stagione: " & stagione & "<br>"
rsGIOCA.MoveNext()
WEND
rsGIOCA.Close
Set rsGIOCA = Nothing
%>
RE: recuperare dati identici su record con ID diverso
theproject non è online. Ultima attività: 03/08/2008 9.37.09theproject
Inserito il: 05 luglio 2008 12.46
57 messaggi dal 16 nov 2001 Istalla Microsoft Silverlight!
Non sei molto chiaro nella spiegazione o per lo meno non ho capito esattemente cosa vuoi.
Secondo me dovresti fare

tabella GIOCATORI
campi:
IdGiocatore-Contatore(univoco) e chiave primaria
Nome
Cognome
>>>Etc.

tabella STAGIONI
campi:
IdStagione-Contatore(univoco) e chiave primaria
IdPlayer-numerico
NomeStagione

metti in relazione uno-molti i campi IdGiocatore con IdPlayer a tabelle vuote

quindi se un giocatore è in 2 stagioni avrai 2 righe con gli stessi dati tranne il campo stagione

"SELECT (solo campi che ti interessano) FROM GIOCATORI INNER JOIN STAGIONI ON Giocatori.IdGiocatore = Stagioni.IdPlayer WHERE Giocatori.IdGiocatore=" & id


Ciao

RE: recuperare dati identici su record con ID diverso
maxpe non è online. Ultima attività: 14/07/2008 4.07.35maxpe
Inserito il: 05 luglio 2008 17.30
6 messaggi dal 11 dic 2007 Istalla Microsoft Silverlight!
Dunque.
Ti ringrazio per avermi risposto e mi cuso per la mancanza di chiarezza.
L'ignoranza la fa da padrona per me che sono solo un aspirante conoscitore dll'Asp.
Prima di provare a mettere in pratica il tuo suggerimento provo a spiegare meglio la situazione:

Il tatabase Access h piu' tabelle.
La tabella tGiocatore contiene:
giocatore_Id; (Chiave Primaria)
giocatore_cognome;
giocatore_nome;
giocatore_data_nascita;
stagione; (Testo: es 2001-2002)
stagione_Id; (Numerico: es 200102)

da questa tabella estraggo e stampo la lista dei giocatori per stagione, ruolo etc etc con ognuno il link alla pagina calciatori_dati.asp che visualizza tutti i dettagli dell'ID (giocatore_id) selezionato.

La pagina calciatore_dati.asp stampa tutte le informazioni contenute nei campi relativi al record che ha un nr. di stagione.

Quindi, e mi scuso per la poca chiarezza, la stagione non è contenuta in un altra tabella. e quindi credo che non si debba utilizzare INNER Join...

Una volta richiamati e stampati tutti i dati di una calciatore (calciatori_dati.asp) so che questo è presenta nella mia tabella in altri record con un giocatore_Id diverso dove a cambiare sono le voci stagione, stagione_ID, presenze, reti etc. ma i campi giocatore_cognome, giocatore_nome, giocatore_data_nascita etc sono uguali!
Devo riuscire a prelevare l'ID estraendo il nome e cognome e richiedere attraverso una query tutti i record della tabella tGiocatori che hanno il medesimo nome, cognome e data di nascita.

Modificato da maxpe il 05 luglio 2008 17.36 -
RE: recuperare dati identici su record con ID diverso
theproject non è online. Ultima attività: 03/08/2008 9.37.09theproject
Inserito il: 05 luglio 2008 19.59
57 messaggi dal 16 nov 2001 Istalla Microsoft Silverlight!
è proprio li dove sbagli!
Quando fai un database l'idea è quella di non replicare dati identici anche per risparmiare spazio.
Quindi se un record in una tabella ha delle caratteristiche (una colonna) che può essere comune ad altri, devi creare una seconda tabella e relazionarla con la prima.
Altrimenti ti limiti a fare un elenco e non un database. Inoltre con il database relazionato hai il vantaggio che modificando il solo record della tabella relazionata la modifica ha effetto su tutti i risultati.

Se poi vuoi fare come vuoi tu devi semplicemente fare una clausola WHERE nome='pippo' AND cognome="caio" AND stagione="2003" se sai esattamente cosa cerchi.

l'operatore LIKE serve invece per cercare "qualcosa di simile a" utilizzando un pattern..una regolar expression ... tipo LIKE "%otti" trova Totti, totti, tombolotti, etc.
Può anche essere molto complessa

Secondo me però sei in errore di logica il db va rivisto diversamente.

RE: recuperare dati identici su record con ID diverso
maxpe non è online. Ultima attività: 14/07/2008 4.07.35maxpe
Inserito il: 06 luglio 2008 16.10
6 messaggi dal 11 dic 2007 Istalla Microsoft Silverlight!
Grazie!
Sei stato molto cortese. Il problema piu' grande è che sono solo un principiante che si diverte nel tempo libero a sviluppare sitarelli per amici e parenti. Il database è stato sicuramente sviluppato in modo incorretto ed è per questo che mi trovo a dover mettere delle "pezze".
In ogni caso non credo di poter tornare a modificare il database in quanto le 12 tabelle che lo contengono hanno circa 2000 record ognuna...
Cerchero' di torvare una soluzione al mio problema utilizzando = anzichè LIKE.
Ma tentero' anche la via INNER JOIN che ho letto puo' essere utilizato anche su query sulla stessa tabella.
RE: recuperare dati identici su record con ID diverso
maxpe non è online. Ultima attività: 14/07/2008 4.07.35maxpe
Inserito il: 14 luglio 2008 04.07
6 messaggi dal 11 dic 2007 Istalla Microsoft Silverlight!
CI SONO RIUSCITO!!!!!!!
A distanza di tempo e di migliaia di prove sono riuscito a ricavare i dati come dicevo senza cambiare il mio database.
Ringrazio chi ha perso tempo con me
Lascio la query risolutiva nella speranza che possa essere di aiuto a qualche disperato come me!

strSQL10f1 = "SELECT giocatore_cognome, giocatore_nome, stagione, giocatore_presenze, giocatore_reti FROM tGiocatori WHERE giocatore_id="&Request.QueryString("ID")
strSQL10f2 = "SELECT giocatore_cognome, giocatore_nome, stagione, giocatore_presenze, giocatore_reti FROM tGiocatori WHERE giocatore_cognome = '" & objRS("giocatore_cognome") & "' AND giocatore_nome = '" & objRS("giocatore_nome") & "'"
strSQL10f3 = strSQL10f1 +" UNION " + strSQL10f2

objRS10f.Open strSQL10f3, objConn10f, adOpenKeyset, adLockPessimistic, adCmdText&nbsp%>
etc etc...


Vai a:
Torna al forum |   Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.


maltra - 761 pt
vladimiro - 502 pt
fabrica - 180 pt

Ultimi vincitori: fabrica, vladimiro, PeppeDotNet

Iscriviti anche tu e raccogli punti. Questo mese in palio VS 2008 + Windows Server 2008, ReShaper e 1 ebook!



COMMUNITY
ULTIMI MESSAGGI


IN EVIDENZA
MISC
Powered by .db Forums