Re: [postgresql-it] unire due query un pò differenti (solo un parametro)

  • From: bako <bakosoft@xxxxxxxx>
  • To: postgresql-it <postgresql-it@xxxxxxxxxxxxx>
  • Date: Fri, 2 Nov 2007 17:08:13 +0100

E' il secondo giorno che perdo dietro a sta roba.
Ho la tabella modulo_domande da dove estraggo le domande, ok.
ora, la metto in inner join,
domande_risposte (che sono tutte le risposte possibili), così dovrei avere
tutte le domande con tutte le risposte possibili, giusto?
oltre a questo lo metto in Right join tra modulo_domande e risposte_date in
modo da avere tutte le risposte date ad una domanda, giusto? ma nn funzia.
per di più devo anche contare quante risposte sono state date.
ho fatto 2 query, il probelema è unire i risultati.

SELECT  md.id_domanda,  COUNT(qr.id_risposta),   rt.id_risposta
FROM qo_questionario_modulo qm
INNER JOIN   qo_modulo_domanda md
    ON  qm.id_modulo = md.id_modulo
INNER JOIN     qo_questionario_risposta qr
    ON md.id_domanda = qr.id_domanda
INNER JOIN   qo_risposta_testo rt
    ON qr.id_risposta = rt.id_risposta
WHERE
    qm.id_questionario = 1     AND rt.id_lingua   = 1
GROUP BY    md.id_domanda,    rt.id_risposta ;

id_domanda  id_risposta  count
----------  -----------  -----
1           2            1
1           0            1
1           1            2
2           7            1
3           19          1
3           0            2
2           8            1

SELECT
  md.id_domanda,  dr.id_risposta
FROM  qo_questionario_modulo qm
INNER JOIN  qo_modulo_domanda md
    ON qm.id_modulo = md.id_modulo
INNER JOIN   qo_domanda_risposta dr
    ON md.id_domanda = dr.id_domanda
INNER JOIN  qo_risposta_testo rt
    ON dr.id_risposta = rt.id_risposta
WHERE  qm.id_questionario = 1 and rt.id_lingua = 1;

id_domanda  id_risposta
----------  -----------
1           1
1           2
1           3
1           4
1           5
2           6
2           7
2           8
2           9
2           10

io come output vorrei:

id_domanda  id_risposta count
----------  -----------  ---------
1           0            1
1           1            2
1           2            1
1           3
1           4
1           5
2           6
2           7            1
2           8            1
2           9
2           10

in neretto le righe che dovrebbero unirsi, la domanda con id 3 NON
dev'essere presetne (credo di farcela mettendo una condizione sulla prima
query, non è quello il grosso del problema).
il massimo sarebbe avere 0 dove il count non è presente.
qualcuno è capace di darmi un aiuto?

Other related posts: