24 messaggi dal 05 febbraio 2002
Ciao a tutti. Il mio problema è il seguente:

ho una tabella con 3 campi che sono UTENTE, INTERESSE1, INTERESSE2. Ho creato delle pagine asp con Dreamweaver che fra di loro funzionano perfettamente, tranne quando il parametro che passo da una pagina di un utente e comune con gli altri ma in campi e posizioni diverse. Mi spiego meglio:

io ho

UTENTE=franco INTERESSE1=calcio INTERESSE2=rugby
UTENTE=pippo INTERESSE1=calcio INTERESSE2=bob
UTENTE=gino INTERESSE1=rugby INTERESSE2=calcio

dalla pagina ad esempio UTENTE=franco, dove ho tutte le sue info ho fatto si che i dati dei campi interesse siano link di collegamento e quindi li passo come parametro di collegamento ad una pagina dove ho due colonne rispettivamente INTERESSE1 e INTERESSE2.

Quando passo il parametro ad esempio INTERESSE1=calcio, vorrei che mi elencasse sotto INTERESSE1 tutti i nomi corrispondenti a coloro che hanno come INTERESSE1 il calcio, ma anche tutti coloro che il calcio ce l'hanno come INTERESSE2.

Sto provando e riprovando ma funziona sempre o come INTERESSE1 ignorando INTERESSE2 e viceversa.

grazie

Francesco
575 messaggi dal 23 giugno 2003
www.padovaboy.it
Ciao,
direi che non ti si riesce ad aiutare molto se non posti un pò di codice!
Ps: il tuo problema sta nella query o nella programmazione?!

www.padovaboy.it dal 2001 con furore :D
24 messaggi dal 05 febbraio 2002
io credo che il problema sia nell'output che vien fuori dalla query, in quanto la query stessa mi genera il risultato che io chiedo, e cioè di darmi tutti i nomi che appartengono all' interesse CALCIO, siano essi di INTERESSE1 o INTERESSE2. Il problema è di disposizione dei dati, in quanto vengono messi tutti sotto la colonna INTERESSE1 e non divisi per colonna di appartenenza, come io ho strutturato la pagina, con due colonne rispettivamente nominate INTERESSE1 e INTERESSE2.

Cmq la quesry è questa:

SELECT UTENTE FROM TABELLA WHERE INTERESSE1 = '" & Request.Querystring("calcio") & "' OR INTERESSE2 = '" & Request.Querystring("calcio") & "'"

vengono fuori i risultati e i nomi sono tutti elencati sotto un'unica colonna

ciao

F
575 messaggi dal 23 giugno 2003
www.padovaboy.it
Ciao,
ancora non capisco qualcosa: quando dici "Il problema è di disposizione dei dati, in quanto vengono messi tutti sotto la colonna INTERESSE1 e non divisi per colonna di appartenenza..." non capisco esattamente cosa intendi visto che la tua query restituisce una unica colonna "UTENTE".

La tua query semplicemente recupera la lista di "utente" con l'interessa passato via querystring presente nalla colonna interesse1 o interesse2.
Poi dividerla è ovvio che è un problema.

Missà che devi scrivere qualche altra delucidazione del problema ;)

Ps: ti conviene trattare un pò di più il parametro passato piuttosto che metterlo direttamente nella query...

www.padovaboy.it dal 2001 con furore :D
24 messaggi dal 05 febbraio 2002
....infatti mi rendo sempre più conto che il problema è dividere i dati. Stavo pensando a due recordset diversi, uno che gestisce la colonna primaria e uno che gestisce la secondaria. Che ne pensi?

F
575 messaggi dal 23 giugno 2003
www.padovaboy.it
Sinceramente è difficile farsi un'idea della "buona soluzione" quando non conosco bene il problema :)

Direi che già la struttura del database è un pò troppo "semplice": se l'utente può essere collegato a più di un interesse, non è la soluzione adatta creare tante colonne quanti sono gli interessi dell'utente nella stessa tabella.
In teoria dovresti creare una tabella utenti finalizzata a contenere i dati anagrafici dell'utente.
Poi dovresti creare altre due tabelle, una contenente gli interessi possibili e l'altra che faccia da tabella relazionale tra le due.
Tipo così:

[UTENTI]
-IDutente
-nome
-cognome
...

[INTERESSI]
-IDinteresse
-nome

[UTENTE_INTERESSI]
-IDutente_int
-IDutente
-IDinteresse


Poi se devi cercare tutti gli utenti che hanno come interesse X fai:

SELECT UTENTI.* FROM UTENTI
INNER JOIN UTENTE_INTERESSI ON UTENTI.IDutente = UTENTE_INTERESSI.IDutente
WHERE UTENTE_INTERESSI.IDinteresse = x;

oppure:

SELECT UTENTI.* FROM UTENTI
INNER JOIN UTENTE_INTERESSI ON UTENTI.IDutente = UTENTE_INTERESSI.IDutente
INNER JOIN INTERESSI ON UTENTE_INTERESSI.IDinteresse = INTERESSI.IDinteressi
WHERE INTERESSI.nome = 'calcio';

In questa maniera rendi il tutto più flessibile.

E' ovvio che questa soluzione è più "onerosa" in termini di programmazione ma ti permette di avere una maggior elasticità.
D'altro canto se te hai previsto nel tuo progetto un MASSIMO di 2 interessi allora forse vale la pena mantenere il tutto così come hai fatto.
Poi appunto tutto dipende dalle finalità.

www.padovaboy.it dal 2001 con furore :D

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.