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

  • From: bako <bakosoft@xxxxxxxx>
  • To: postgresql-it <postgresql-it@xxxxxxxxxxxxx>
  • Date: Thu, 1 Nov 2007 14:14:54 +0100

sono riuscito a fare questa (lo so, i nomi sono lunghi, ma le faccio con
l'editor visuale):

SELECT DISTINCT
    qo_risposta_testo."id_risposta"       AS qo_risposta_testo_id_risposta,
    qo_domanda_risposta."id_domanda"      AS qo_domanda_risposta_id_domanda,

    qo_questionario_risposta."id_domanda" AS
qo_questionario_risposta_id_domanda
FROM
    "public"."qo_risposta_testo" qo_risposta_testo
LEFT OUTER JOIN
    "public"."qo_questionario_risposta" qo_questionario_risposta
    ON
    qo_risposta_testo."id_risposta" = qo_questionario_risposta."id_risposta"

LEFT OUTER JOIN
    "public"."qo_domanda_risposta" qo_domanda_risposta
    ON
    qo_risposta_testo."id_risposta" = qo_domanda_risposta."id_risposta",
    "public"."qo_modulo_domanda" qo_modulo_domanda
INNER JOIN
    "public"."qo_questionario_modulo" qo_questionario_modulo
    ON
    qo_modulo_domanda."id_modulo" = qo_questionario_modulo."id_modulo"
WHERE
    qo_questionario_modulo."id_questionario" = 1
    and
    (
        qo_domanda_risposta."id_domanda" in
        (
        SELECT
            qo_modulo_domanda."id_domanda" AS qo_modulo_domanda_id_domanda
        FROM
            "public"."qo_modulo_domanda" qo_modulo_domanda
        INNER JOIN
            "public"."qo_questionario_modulo" qo_questionario_modulo
            ON
            qo_modulo_domanda."id_modulo" =
qo_questionario_modulo."id_modulo"
        WHERE
            qo_questionario_modulo."id_questionario" = 1
        )
        or qo_questionario_risposta."id_domanda" in
        (
        SELECT
            qo_modulo_domanda."id_domanda" AS qo_modulo_domanda_id_domanda
        FROM
            "public"."qo_modulo_domanda" qo_modulo_domanda
        INNER JOIN
            "public"."qo_questionario_modulo" qo_questionario_modulo
            ON
            qo_modulo_domanda."id_modulo" =
qo_questionario_modulo."id_modulo"
        WHERE
            qo_questionario_modulo."id_questionario" = 1
        )
    )

praticamente da in output:
0      (null)     1
0      (null)     3
1       1         1
2       1         1
3       1         (null)
4       1         (null)
5       1         (null)
6       2         (null)
7       2         2
8       2         2
9       2        (null)
10     2        (null)
19    (null)    3

c'è un modo per fondere le seconde 2 colonne in modo da avere in totale 2
colonne ?
praticamente verrebbe:
0       1
0       3
1       1
2       1
3       1
4       1
5       1
6       2
7       2
8       2
9       2
10     2
19     3

è possibile?

Il 01/11/07, bako <bakosoft@xxxxxxxx> ha scritto:


Ciao, ho provato ma nn va.
ai messo questionario_modulo m  e poi m.id_domanda, solo che
questionario_modulo non ha id_domanda.
http://img161.imageshack.us/img161/3152/querytutterispostesp1.jpg ;)



 SE LECT
     d.testo AS domanda,
     r.testo AS risposta,
     count(rb.id_risposta)
FROM
     qo_modulo_domanda d
     INNER JOIN qo_questionario_modulo m ON d.id_modulo =
m.id_modulo
     INNER JOIN qo_questionario_risposta r ON m.id_domanda =
r.id_domanda
     INNER JOIN qo_domanda_testo d ON r.id_domanda = d.id_domanda
     LEFT JOIN qo_risposta_testo rb ON r.id_risposta =
rb.id_risposta
WHERE
     m.id_questionario = 1
     AND (d.id_lingua = 1
     or d.id_lingua = 0)
GROUP BY  d.testo, r.testo


--
Stefano




--
Stefano




-- 
Stefano

Other related posts: