Prima funzionava perché non avevo messo le condizioni della tabella "HaiClientPluginOption" ma ora mi servono e non funge più.
Spiego:
La tabella "PluginOption" (B) è una tabella template quindi ha un id che corrisponde all'id di un plugin della tabella "HaiPlugin" (HAI stands for Human Abstract Interface).
Ogni plugin può essere usato da un HaiClient in un HaiProject e quindi, in un HaiClient, ha un suo SessionId visto che può essere usato più volte.
Quindi ho fatto una tabella "HaiClientPluginOption" (A) in cui la chiave è "HaiClientId + HaiPluginId + ProjectId + SessionId + Option".
Quindi ogni progetto, ha n clients che possono avere n plugins ognuno con un session id diverso ed una serie di options, univoche per ogni "session id" in quel client/progetto.
Ora, dal DB devo estrarre tutti campi dalla tabella "HaiClientPluginOption" che hanno gli id specificati nelle condizioni OPPURE, se non ci sono, dalla tabella template "PluginOption".
Come cazzo si fa visto che non ne esco fuori ?
La tabella "PluginOption" con id 1 ha 6 campi:
Codice:
SELECT
"Id",
TRIM("Value") AS "Value",
TRIM("Option") AS "Option",
"MultipleValue"
FROM "PluginOption"
WHERE "Id" = 1;
Cita:
Id | btrim | btrim | MultipleValue
----+-------------------------------------+-------------------------+---------------
1 | AUDIO.5.1.1;AUDIO.5.2.2;AUDIO.5.3.3 | inputKey | t
1 | jconf.both | jInitFile | f
1 | VSS.1.1.2 | managementKey | f
1 | GOOFY.6.6.6 | recognictionControl.foo | f
1 | CMD.6.6.6.6 | recognictionControl.key | t
1 | CMD.5.5.5.5 | resultControl.key | f
(6 rows)
La tabella "HaiClientPluginOption" con SessionId 3 non ha niente ma la query non mi torna niente manco dalla tabella "PluginOption":
Codice:
SELECT
COALESCE(TRIM(A."Option"), TRIM(B."Option")) AS "Option",
COALESCE(TRIM(A."Value") , TRIM(B."Value")) AS "Value",
B."MultipleValue"
FROM
"HaiClientPluginOption" A
FULL OUTER JOIN "PluginOption" B
ON (true)
WHERE
B."Id" = 1
AND COALESCE(A."HaiClientId", 1) = 1
AND COALESCE(A."HaiPluginId", 1) = 1
AND COALESCE(A."ProjectId" , 1) = 1
AND COALESCE(A."SessionId" , 3) = 3
ORDER BY "Option";
Cita:
Option | Value | MultipleValue
--------+-------+---------------
(0 rows)