Query per associare un parametro

lunedì 30 giugno 2008 - 14.37

Daniela83 Profilo | Newbie

Ciao,
sto sviluppando un'applicazione che interroga un DB MS SQL server. In base al valore di un parametro (qui lo chiamo X) di una tabella C dove ci sono delle risposte devo associare solo alcune voci della tabella D. come farlo in SQL?

la tabella D è formata da id_voce, voce
La tabella C è formata da id_risp, risposta

io devo fare una tabella E che contenta risposta, voce.
in base alla risposta che ho dato (padre o madre), devo visualizzare solo le voci (molto, abbastanza, poco, niente)

Ho provato così:

Select * from
If Q1.p_index='1' and Q1.p_index='2'
then Scelta.voce='Ottimo'
else (qui non so cosa mettere perchè vorrei che visualizzasse tutte le altre voci)
End if

lbenaglia Profilo | Guru

>sto sviluppando un'applicazione che interroga un DB MS SQL server.
>In base al valore di un parametro (qui lo chiamo X) di una tabella
>C dove ci sono delle risposte devo associare solo alcune voci
>della tabella D. come farlo in SQL?

Ciao Daniela,

posta i comandi DDL delle tabelle (CREATE TABLE), alcune righe di prova (INSERT INTO) ed il result set finale che vuoi ottenere con quei dati.

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

Daniela83 Profilo | Newbie

Scusa ma non ho capito quello che devo fare...

lbenaglia Profilo | Guru

>Scusa ma non ho capito quello che devo fare...
Mi devi allegare i comandi T-SQL di creazione delle tabelle, i comandi di INSERT per popolarle con dei dati di prova, ed il risultato che vuoi ottenere partendo da quei dati.

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

Daniela83 Profilo | Newbie

ah ok scusa...

tabella risposte

CREATE TABLE `Questionari`.`Q2` (
`id q2` int(10) unsigned NOT NULL auto_increment,
`voci` varchar(500) NOT NULL,
PRIMARY KEY (`id q2`)
) ENGINE=MyISAM AUTO_INCREMENT=23 DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC;

tabella riepilogativa

CREATE TABLE `Questionari`.`Q1` (
`id q1` int(11) NOT NULL auto_increment,
`voci` varchar(300) NOT NULL,
`padre` varchar(45) NOT NULL,
`voci_bis` varchar(45) NOT NULL,
PRIMARY KEY (`id q1`)
) ENGINE=MyISAM AUTO_INCREMENT=45 DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC;

tabella scelte

CREATE TABLE `Questionari`.`Scelte` (
`id scelta` int(11) NOT NULL auto_increment,
`voce` varchar(45) NOT NULL,
PRIMARY KEY (`id scelta`)
) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC;


tabella che contiene le tre cose

select `id q1`, d.voci as padre, a.voci, padre as p_index, b.voce as voci_bis, b.`id scelta`
from Q1 a
join Q2 d
on a.padre=d.`id q2`
left join Scelte b
on a.voci_bis=b.`id scelta`


esempio:

tabella risposte

in famiglia,coi genitori
in famiglia, con i fratelli
padre
madre

tabella scelte
ottimo
buono
molto
abbastanza

tabella riepilogativa
in famiglia, coi genitori (vuoto)
in famiglia, coi fratelli (ottimo)

per padre e madre devo associare solo molto e abbastanza

praticamente ho fatto un questionario e le risposte devono essere registrate nel database... cosi ho fatto la tabella risposte dove sono indicate tutte le risposte del questionario, la tabella scelte dove sono registrate tutte le diverse scelte, quindi una tabella riepilogativa che contiene tutti le risposte con le scelte.
nella tabella riepilogativa ho fatto un campo con le risposte ("PADRE"), uno dove sono registrate tutte le risposte possibili ("VOCI") e uno dove sono registrate le scelte (VOCI_BIS)

praticamente ho
q1 I tuoi genitori sono
- sposati
-divorziati

q2 com'è il rapporto
ottimo buono pessimo
-padre
-madre

q3 quanto parli con
poco abbast molto

-famiglia
-amici
-prof

etc.

ho registrato tutte le domande, tutte le risposte, tutte le scelte
nella tabella riepilogativa ho fatto un select che selezionasse le domande (padre), tutte le possibili risposte di ogni domanda (voci), e poi ho fatto un campo voci_bis per inserire le scelte.

solo per le risposte alla domanda q2 devo solo poter scegliere le scelte indicate e quindi devo solo visualizzare quello nelle opzioni.

capito?

lbenaglia Profilo | Guru

> ENGINE=MyISAM

Daniela,

Tu non stai usando SQL Server, ma MySQL
Non sono ferrato con questo DBMS, quindi passo la palla a chi ne sa più di me.

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

Daniela83 Profilo | Newbie

ah ok....... non sai chi mi può aiutare?
cmq grazie lo stesso per avermi preso in considerazione.... Buona serata
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5