Index: trunk/ippTools/share/disttool_definebyquery_camera.sql
===================================================================
--- trunk/ippTools/share/disttool_definebyquery_camera.sql	(revision 24707)
+++ trunk/ippTools/share/disttool_definebyquery_camera.sql	(revision 24725)
@@ -3,5 +3,5 @@
     camRun.cam_id as stage_id,
     rawExp.exp_name as run_tag,
-    rawExp.obs_mode,
+    distTarget.label,
     distTarget.target_id,
     distTarget.clean
@@ -10,5 +10,6 @@
 JOIN rawExp USING(exp_id)
 JOIN distTarget ON distTarget.stage = 'camera'
-    AND rawExp.obs_mode = distTarget.obs_mode
+    AND rawExp.filter = distTarget.filter
+    AND camRun.label  = distTarget.label
 JOIN rcInterest USING(target_id)
 LEFT JOIN distRun ON distRun.stage = 'camera' 
Index: trunk/ippTools/share/disttool_definebyquery_chip.sql
===================================================================
--- trunk/ippTools/share/disttool_definebyquery_chip.sql	(revision 24707)
+++ trunk/ippTools/share/disttool_definebyquery_chip.sql	(revision 24725)
@@ -3,5 +3,5 @@
     chipRun.chip_id as stage_id,
     rawExp.exp_name as run_tag,
-    rawExp.obs_mode,
+    chipRun.label,
     distTarget.target_id,
     distTarget.clean
@@ -9,5 +9,6 @@
 JOIN rawExp USING(exp_id)
 JOIN distTarget ON distTarget.stage = 'chip'
-    AND rawExp.obs_mode = distTarget.obs_mode 
+    AND chipRun.label = distTarget.label 
+    AND rawExp.filter = distTarget.filter
 JOIN rcInterest USING(target_id)
 LEFT JOIN distRun ON distRun.stage = 'chip' 
Index: trunk/ippTools/share/disttool_definebyquery_diff.sql
===================================================================
--- trunk/ippTools/share/disttool_definebyquery_diff.sql	(revision 24707)
+++ trunk/ippTools/share/disttool_definebyquery_diff.sql	(revision 24725)
@@ -3,5 +3,5 @@
     diffRun.diff_id AS stage_id,
     rawExp.exp_name as run_tag,
-    rawExp.obs_mode,
+    distTarget.label,
     distTarget.target_id,
     distTarget.clean
@@ -13,5 +13,7 @@
 JOIN chipRun USING(chip_id)
 JOIN rawExp USING(exp_id)
-JOIN distTarget ON distTarget.stage = 'diff' AND rawExp.obs_mode = distTarget.obs_mode
+JOIN distTarget ON distTarget.stage = 'diff'
+    AND diffRun.label = distTarget.label
+    AND distTarget.filter = rawExp.filter
 JOIN rcInterest USING(target_id)
 LEFT JOIN distRun ON distRun.stage = 'diff' AND (distRun.stage_id = diff_id)
Index: trunk/ippTools/share/disttool_definebyquery_fake.sql
===================================================================
--- trunk/ippTools/share/disttool_definebyquery_fake.sql	(revision 24707)
+++ trunk/ippTools/share/disttool_definebyquery_fake.sql	(revision 24725)
@@ -3,12 +3,13 @@
     fakeRun.fake_id AS stage_id,
     rawExp.exp_name as run_tag,
-    rawExp.obs_mode,
+    distTarget.label,
     distTarget.target_id,
     distTarget.clean
 FROM fakeRun
-JOIN camRun USING(cam_id) -- ON fakeRun.cam_id = camRun.cam_id
+JOIN camRun USING(cam_id)
 JOIN chipRun USING(chip_id)
 JOIN rawExp USING(exp_id)
-JOIN distTarget ON distTarget.stage = 'fake' AND rawExp.obs_mode = distTarget.obs_mode
+JOIN distTarget ON distTarget.stage = 'fake' AND fakeRun.label = distTarget.label
+    AND rawExp.filter = distTarget.filter
 JOIN rcInterest USING(target_id)
 LEFT JOIN distRun ON distRun.stage = 'fake' AND (distRun.stage_id = fake_id)
Index: trunk/ippTools/share/disttool_definebyquery_raw.sql
===================================================================
--- trunk/ippTools/share/disttool_definebyquery_raw.sql	(revision 24707)
+++ trunk/ippTools/share/disttool_definebyquery_raw.sql	(revision 24725)
@@ -3,10 +3,11 @@
     rawExp.exp_id AS stage_id,
     rawExp.exp_name AS run_tag,
-    rawExp.obs_mode,
+    distTarget.label,
     distTarget.target_id,
     distTarget.clean
 FROM rawExp
 JOIN chipRun USING(exp_id)
-JOIN distTarget ON distTarget.obs_mode = rawExp.obs_mode AND distTarget.stage = 'raw'
+JOIN distTarget ON distTarget.label = chipRun.label AND distTarget.stage = 'raw'
+    AND rawExp.filter = distTarget.filter
 JOIN rcInterest USING(target_id)
 LEFT JOIN distRun ON distRun.stage = 'raw' AND distRun.stage_id = exp_id
Index: trunk/ippTools/share/disttool_definebyquery_stack.sql
===================================================================
--- trunk/ippTools/share/disttool_definebyquery_stack.sql	(revision 24707)
+++ trunk/ippTools/share/disttool_definebyquery_stack.sql	(revision 24725)
@@ -4,15 +4,11 @@
     -- run tag in the form 'stack.$skycell_id.$stack_id'
     CONCAT_WS('.', 'stack', stackRun.skycell_id, convert(stackRun.stack_id, CHAR)) as run_tag,
-    rawExp.obs_mode,
+    distTarget.label,
     distTarget.target_id,
     distTarget.clean
 FROM stackRun
-JOIN stackInputSkyfile using(stack_id)
-JOIN warpRun USING(warp_id)
-JOIN fakeRun USING(fake_id)
-JOIN camRun USING(cam_id)
-JOIN chipRun USING(chip_id)
-JOIN rawExp USING(exp_id)
-JOIN distTarget ON distTarget.stage = 'stack' AND rawExp.obs_mode = distTarget.obs_mode
+JOIN distTarget ON distTarget.stage = 'stack'
+    AND stackRun.label = distTarget.label
+    AND stackRun.filter = distTarget.filter
 JOIN rcInterest USING(target_id)
 LEFT JOIN distRun ON distRun.stage = 'stack' AND (distRun.stage_id = stack_id)
Index: trunk/ippTools/share/disttool_definebyquery_warp.sql
===================================================================
--- trunk/ippTools/share/disttool_definebyquery_warp.sql	(revision 24707)
+++ trunk/ippTools/share/disttool_definebyquery_warp.sql	(revision 24725)
@@ -3,5 +3,5 @@
     warpRun.warp_id AS stage_id,
     rawExp.exp_name as run_tag,
-    rawExp.obs_mode,
+    distTarget.label,
     distTarget.target_id,
     distTarget.clean
@@ -11,5 +11,7 @@
 JOIN chipRun USING(chip_id)
 JOIN rawExp USING(exp_id)
-JOIN distTarget ON distTarget.stage = 'warp' AND rawExp.obs_mode = distTarget.obs_mode
+JOIN distTarget ON distTarget.stage = 'warp' 
+    AND warpRun.label = distTarget.label
+    AND rawExp.filter = distTarget.filter
 JOIN rcInterest USING(target_id)
 LEFT JOIN distRun ON distRun.stage = 'warp' AND (distRun.stage_id = warp_id)
Index: trunk/ippTools/share/pxadmin_create_tables.sql
===================================================================
--- trunk/ippTools/share/pxadmin_create_tables.sql	(revision 24707)
+++ trunk/ippTools/share/pxadmin_create_tables.sql	(revision 24725)
@@ -1214,5 +1214,6 @@
 CREATE TABLE distTarget (
     target_id   BIGINT AUTO_INCREMENT,
-    obs_mode    VARCHAR(64),
+    label       VARCHAR(64),
+    filter      VARCHAR(64),
     stage       VARCHAR(64),
     clean       TINYINT,
@@ -1220,4 +1221,5 @@
     comment     VARCHAR(255),
     PRIMARY KEY(target_id)
+    CONSTRAINT UNIQUE (label, filter, stage, clean),
 )  ENGINE=innodb DEFAULT CHARSET=latin1;
 
