SELECT COALESCE(TRIM(A."Option"), TRIM(B."Option")), COALESCE(TRIM(A."Value") , TRIM(B."Value")), B."MultipleValue" FROM "HaiClientPluginOption" A RIGHT OUTER JOIN "PluginOption" B ON A."Option" = B."Option" WHERE B."Id" = 1;
SQL (PostgreSQL)
#21
Inviato 19 ottobre 2011 - 13:45
#22
Inviato 19 ottobre 2011 - 13:49
Potrebbe anche andare ma ho un 3° campo che c'è solo nella tabella B e ciò invalida la union:
SELECT COALESCE(TRIM(A."Option"), TRIM(B."Option")), COALESCE(TRIM(A."Value") , TRIM(B."Value")), B."MultipleValue" FROM "HaiClientPluginOption" A RIGHT OUTER JOIN "PluginOption" B ON A."Option" = B."Option" WHERE B."Id" = 1;
ah ok allora che la join sia con te
ah e comunque:
SELECT COALESCE( TRIM(A."Option"), TRIM(B."Option") ), COALESCE( TRIM(A."Value") , TRIM(B."Value") ), B."MultipleValue" FROM "HaiClientPluginOption" A RIGHT OUTER JOIN "PluginOption" B ( ON A."Option" = B."Option" ) WHERE B."Id" = 1;
Curiamo l'indentazione per cortesia
#23
Inviato 19 ottobre 2011 - 13:54
#24
Inviato 19 ottobre 2011 - 14:08
Ma va a cagher! indenta il traffico di Roma prima di parlare
no dai roma perderebbe metà del suo fascino senza le smart sopra gli alberi
#25
Inviato 19 ottobre 2011 - 12:59
Nella tabella A ho:
- Option -+--- Value ------------------------------------------------------------------------------ jInitFile | /home/user/workspace/hai2.0/test/linux/asrTwoClientPCMSimplex/client_2/jconf.both inputKey | AUDIO.5.1.1;AUDIO.5.2.2;AUDIO.5.3.3
Nella tabella B ho:
----- Option -----------+--- Value ------------------------------------------------------------------------------ inputKey | AUDIO.5.1.1;AUDIO.5.2.2;AUDIO.5.3.3 managementKey | VSS.1.1.2 jInitFile | /home/user/workspace/hai2.0/test/linux/asrTwoClientPCMSimplex/client_2/jconf.both resultControl.key | CMD.5.5.5.5 recognictionControl.key | CMD.6.6.6.6 recognictionControl.foo | GOOFY.6.6.6
Quindi nella tabella A ho solo 2 records presenti nella tabella B.
Ora con una sola query vorrei estrarre tutti i records:
se ci sono nella A li prendo dalla A, altrimenti dalla B dove so che ci sono tutti (è una tabella "template").
Dove sbaglio ? (con Oracle userei NVL ma su postgreSQL c'è COALESCE)
SELECT COALESCE(TRIM(A."Option"), TRIM(B."Option" )), COALESCE(TRIM(A."Value" ), TRIM(B."DefaultValue")) FROM "HaiClientPluginOption" A, "PluginOption" B WHERE A."HaiPluginOptionId" = B."Id" AND B."Id" = 1;
Output:
coalesce | coalesce -----------+---------------------------------------------------------------------------------------- jInitFile | /home/user/workspace/hai2.0/test/linux/asrTwoClientPCMSimplex/client_2/jconf.both inputKey | AUDIO.5.1.1;AUDIO.5.2.2;AUDIO.5.3.3 jInitFile | /home/user/workspace/hai2.0/test/linux/asrTwoClientPCMSimplex/client_2/jconf.both inputKey | AUDIO.5.1.1;AUDIO.5.2.2;AUDIO.5.3.3 jInitFile | /home/user/workspace/hai2.0/test/linux/asrTwoClientPCMSimplex/client_2/jconf.both inputKey | AUDIO.5.1.1;AUDIO.5.2.2;AUDIO.5.3.3 jInitFile | /home/user/workspace/hai2.0/test/linux/asrTwoClientPCMSimplex/client_2/jconf.both inputKey | AUDIO.5.1.1;AUDIO.5.2.2;AUDIO.5.3.3 jInitFile | /home/user/workspace/hai2.0/test/linux/asrTwoClientPCMSimplex/client_2/jconf.both inputKey | AUDIO.5.1.1;AUDIO.5.2.2;AUDIO.5.3.3 jInitFile | /home/user/workspace/hai2.0/test/linux/asrTwoClientPCMSimplex/client_2/jconf.both inputKey | AUDIO.5.1.1;AUDIO.5.2.2;AUDIO.5.3.3 (12 rows)
ho provato ad aggiungere questa:
AND B."Option" IN ( SELECT "Option" FROM "PluginOption" WHERE "Id" = 1 );
ma nada.
#26
Inviato 19 ottobre 2011 - 13:00
#27
Inviato 19 ottobre 2011 - 13:01
Ma si, ho fatto sql a tonnellate in Italia ma son passati anni.Mai sentito parlare di JOIN?
Dai, sputa l'osso please.
#28
Inviato 19 ottobre 2011 - 13:10
SELECT *
FROM TABELLA1 AS A
LEFT OUTER JOIN TABELLA2 AS B
ON A.OPTION = B.OPTION
WHERE
dove TABELLA1 è quella con meno record.
#29
Inviato 19 ottobre 2011 - 13:10
#30
Inviato 19 ottobre 2011 - 13:18
Allora, dovrebbero esserci tutti i record della tabella B quindi, se non ricordo male,Prova così:
SELECT *
FROM TABELLA1 AS A
LEFT OUTER JOIN TABELLA2 AS B
ON A.OPTION = B.OPTION
WHERE
dove TABELLA1 è quella con meno record.
è RIGHT OUTER JOIN.
Mi da 6 records però il campo Option ha solo i 2 record della tabella A ed è vuoto per gli altri 4 che ci sono nella B.
Con LEFT OUTER JOIN invece ottengo solo 2 records.
#31
Inviato 19 ottobre 2011 - 13:20
Più o meno non è la stessa cosa ? solo che coalesce accetta più parametri mentre la nvl solo 2.quando torno in ufficio ci butto un occhio ma attento che coalesce e nvl son due cose diverse
#32
Inviato 19 ottobre 2011 - 13:22
Non avevo voglia di farmi le tue tabelle qui in ufficio e non ho potuto provare.
Prova la FULL OUTER JOIN.
#33
Inviato 19 ottobre 2011 - 13:23
SELECT COALESCE(TRIM(A."Option"), TRIM(B."Option")), COALESCE(TRIM(A."Value") , TRIM(B."Value")) FROM "HaiClientPluginOption" A RIGHT OUTER JOIN "PluginOption" B ON A."Option" = B."Option" WHERE B."Id" = 1;
Grazie 1000
#34
Inviato 19 ottobre 2011 - 13:25
#35
Inviato 19 ottobre 2011 - 13:27
#36
Inviato 19 ottobre 2011 - 13:28
#37
Inviato 19 ottobre 2011 - 13:30
Ma la nera non te la presento più, è tornata col marito.
#38
Inviato 19 ottobre 2011 - 13:32
Comunque un giretto in Germania me lo farei volentieri.
Tu dove vivi? Io ho delle amiche a Köln...
#39
Inviato 19 ottobre 2011 - 13:36
381km da Köln.
#40
Inviato 19 ottobre 2011 - 13:38
Un po' troppo direi...381km da Köln.
Comunque se mi gira lo sghiribizzo ti avviso...