Scelta del campo da visualizzare in mysql

mercoledì 03 maggio 2006 - 13.26

isotopo75 Profilo | Newbie

ciao a tutti, ho un problema con un db in mysql che è fatto molto con i piedi.

ho una tabella chiamata Documenti fatta cosi:

doc_id | doc1 | doc2 | doc3 <-- questi sono i nomi dei campi

01 | pippo| pluto| paperino <-- questi sono i loro valori


Poi ho una tabella Relazioni fatta cosi:

user_id | descrizione| legame <-- questi sono i nomi dei campi

01 |la vita di pippo| doc1 <-- questi sono i loro valori
02 |la vita di pluto | doc2
03 |la vita di paper| doc3

La struttura della tabella documenti NON può essere modificata, quella della tabella Relazioni si.
Il mio scopo è quello di poter selezionare il valore del campo doc1 in documenti (cioè pippo), conoscendo lo user_id di Relazioni; in pratica devo trovare il modo di legare fra loro il valore contenuto nel campo legame della tabella Relazioni con il mome del campo doc1 in Documenti!!

Prescindendo dal fatto che, come detto, la struttura della tabella documenti lascia molto a desiderare (ma purtroppo NON posso cambiarla!), secondo voi è possibile ottenere tale risultato con una query oppure no?
Se pensate che possa esistere una soluzione anche diversa purchè mi conduca al risultato cercato va bene lo stesso!!!


Grazie mille a tutto il forum!!

Iso75

lbenaglia Profilo | Guru

>Il mio scopo è quello di poter selezionare il valore del campo
>doc1 in documenti (cioè pippo), conoscendo lo user_id di Relazioni;
>in pratica devo trovare il modo di legare fra loro il valore
>contenuto nel campo legame della tabella Relazioni con il mome
>del campo doc1 in Documenti!!

Ciao Iso75,

potresti postare il result set che vorresti ottenere on output?

Grazie,

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

isotopo75 Profilo | Newbie

Ok... date le due tabelle:

doc_id | doc1 | doc2 | doc3 <-- questi sono i nomi dei campi

01 | pippo| pluto| paperino <-- questi sono i loro valori


Poi ho una tabella Relazioni fatta cosi:

user_id | descrizione| legame <-- questi sono i nomi dei campi

01 |la vita di pippo| doc1 <-- questi sono i loro valori
02 |la vita di pluto | doc2
03 |la vita di paper| doc3


Ho bisogno di una select che mi restituisca semplicemente il valore

pippo

Il problema è che io parto dal presupposto che non so che pippo è il valore di doc1...
io conosco solo lo user_id =1 e legame = doc1
Sapendo che legame=doc1 vado a scegliere il contenuto del campo chiamato doc1 e ottengo pippo...

il mio problema è legare il valore contenuto in un campo con il nome di un altro campo!!! Di solito si legano i valori di due campi...

grazie

iso75

lbenaglia Profilo | Guru

>Il problema è che io parto dal presupposto che non so che pippo
>è il valore di doc1...
>io conosco solo lo user_id =1 e legame = doc1
>Sapendo che legame=doc1 vado a scegliere il contenuto del campo
>chiamato doc1 e ottengo pippo...

A parte l'assurdità di dover capire qual è la colonna docx da interrogare, come fai a sapere anche la riga?
Non vedo soluzioni con questa struttura.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

isotopo75 Profilo | Newbie

grazie lo stesso...

supponevo che non ci fosse soluzione...

Un'altra cosa:

esiste la possibilità con una select di selezionare una colonna x di una tabella scegliendola come un numero?

Mi spiego:

data la tabella:

user_id | nome | cognome | citta

voglio selezionare i valori del campo 3 (cioè cognome) senza però specificare il nome del campo ma semplicemente dicendogli che è il terzo campo della tabella.

Grazie ancora,

iso75

lbenaglia Profilo | Guru

>Un'altra cosa:
>
>esiste la possibilità con una select di selezionare una colonna
>x di una tabella scegliendola come un numero?

Non conosco MySQL, ma in ANSI SQL-92 no.
Eventualmente puoi utilizzare un numero esclusivamente nella clausola ORDER BY (anche se personalmente lo ritengo una porcata).
Nel tuo caso la scelta della colonna falla lato client dato che conosci a priori il suo nome. Il problema GROSSO è quello di conoscere anche la riga

>Grazie ancora,
Prego.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

isotopo75 Profilo | Newbie

Grazie mille

ciao

iso75

trinity Profilo | Guru

Scusa ma perchè non utilizzi l'inner join di sql prendi i dati che vuoi e poi visualizzi il codice e la descrzione che desideri....
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/

lbenaglia Profilo | Guru

>Scusa ma perchè non utilizzi l'inner join di sql prendi i dati
>che vuoi e poi visualizzi il codice e la descrzione che desideri....

E quale sarebbe questa JOIN?

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

trinity Profilo | Guru

Scusami Lorenzo ma mio fratello si è permesso di prendere il mio pc e rispondere ad alcuni post di forum tra cui questo senza mia autorizzazione...ovviamente la litigata c'era tutta...
Non ho seguito il discorso perchè ho letto l'email di notifica della tua risposta alla "presunta" mia e basta. appena ho un secondo di tempo leggerò tutto il post e riponderò se avrò una soluzione a questo problema...

Ciao Fabio
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/

lbenaglia Profilo | Guru

>Scusami Lorenzo ma mio fratello si è permesso di prendere il
>mio pc e rispondere ad alcuni post di forum tra cui questo senza
>mia autorizzazione...ovviamente la litigata c'era tutta...

Oh mamma mia, una litigata per così poco
Non c'è bisogno di scusarsi, anzi, siamo tutti qua per imparare, quindi se esiste davvero una soluzione al problema esposto da Iso75 sarei il primo a volerla conoscere (senza offesa, Iso75)

>Non ho seguito il discorso perchè ho letto l'email di notifica
>della tua risposta alla "presunta" mia e basta. appena ho un
>secondo di tempo leggerò tutto il post e riponderò se avrò una
>soluzione a questo problema...

OK, ti aspettiamo
A proposito, fratello di Fabio, perché non ti crei un account personale nella community di DNH in modo da evitare questi disguidi?

Ciao a tutti e due!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

trinity Profilo | Guru

Ma in effetti potresti utilizzare l'inner join solo che devi avere come server mysql la versione 5 perchè supporta tutti i tipi di inner join e la SubSelect...

cmq non ho potuto fare dei test e per questo ti do dei link da cui potresti prendere spunto:

http://www.mysqlfreaks.com/statements/10.php
http://dev.mysql.com/doc/refman/5.0/en/join.html

Dato che hai detto che la tabella documenti non può essere variata ma quella relazioni si, immagino che la colonna User_id è la chiave della tabella. Tu in questa tabella inserisci un'altra colonna chiamata doc_id dello stesso tipo della tabella documenti ed ovviamente al suo interno gli devi passare gli setssi codici a questo punto puoi creare una relazioni tra le due tabelle (idicizzali questi campi da velocizzare il tutto):

Select relazioni.user_id,relazioni.descrizione,documenti.doc1 From Relazioni Inner Join Documenti ON Realzioni.doc_id = Documenti.doc_id Where relazioni.user_id in 'valore'
con questo codice dovresti selzionare i dati della tabella relazioni e documenti dove hanno in comune il doc_id.

Ciao

Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5