Index: /tags/ipp-20121218/ippTools/share/staticskytool_defineskycalrun.sql
===================================================================
--- /tags/ipp-20121218/ippTools/share/staticskytool_defineskycalrun.sql	(revision 34976)
+++ /tags/ipp-20121218/ippTools/share/staticskytool_defineskycalrun.sql	(revision 34977)
@@ -1,5 +1,5 @@
 SELECT
-    sky_id,
-    stack_id,
+    staticskyRun.sky_id,
+    stackRun.stack_id,
     skycell_id,
     filter,
@@ -14,5 +14,5 @@
     JOIN stackSumSkyfile USING(stack_id)
     JOIN skycell USING(tess_id, skycell_id)
-    LEFT JOIN skycalRun USING(sky_id, stack_id)
+    LEFT JOIN skycalRun ON staticskyRun.sky_id = skycalRun.sky_id AND stackRun.stack_id = skycalRun.stack_id -- join hook %s
 WHERE staticskyRun.state = 'full'
     AND staticskyResult.quality = 0
Index: /tags/ipp-20121218/ippTools/share/staticskytool_skycalresult.sql
===================================================================
--- /tags/ipp-20121218/ippTools/share/staticskytool_skycalresult.sql	(revision 34976)
+++ /tags/ipp-20121218/ippTools/share/staticskytool_skycalresult.sql	(revision 34977)
@@ -2,13 +2,12 @@
     skycalResult.*,
     skycalRun.stack_id,
-    stackRun.tess_id,
-    stackRun.skycell_id,
     stackRun.filter,
     skycalRun.state,
     skycalRun.label,
     skycalRun.data_group,
-    skycalRun.sky_id
+    skycalRun.sky_id,
+    skycell.*
 FROM skycalRun
 JOIN skycalResult USING(skycal_id)
-JOIN stackRun USING(stack_id)
-
+JOIN stackRun USING(stack_id) 
+JOIN skycell USING(tess_id, skycell_id)
Index: /tags/ipp-20121218/ippTools/src/staticskytool.c
===================================================================
--- /tags/ipp-20121218/ippTools/src/staticskytool.c	(revision 34976)
+++ /tags/ipp-20121218/ippTools/src/staticskytool.c	(revision 34977)
@@ -1066,16 +1066,20 @@
     psFree(whereMD);
 
+    psString labelHook = psStringCopy("");
     if (!rerun) {
         if (label)  {
-            psStringAppend(&query, "\nAND (skycalRun.label IS NULL OR skycalRun.label = '%s')", label);
+            psStringAppend(&labelHook, "\nAND skycalRun.label = '%s'", label);
         }
         psStringAppend(&query, "\nAND skycal_id IS NULL");
     }
 
-    if (!p_psDBRunQuery(config->dbh, query)) {
+
+    if (!p_psDBRunQueryF(config->dbh, query, labelHook)) {
         psError(PS_ERR_UNKNOWN, false, "database error");
+        psFree(labelHook);
         psFree(query);
         return false;
     }
+    psFree(labelHook);
     psFree(query);
 
@@ -1392,5 +1396,11 @@
     PXOPT_COPY_STR(config->args, where, "-label",      "skycalRun.label", "==");
     PXOPT_COPY_STR(config->args, where, "-data_group", "skycalRun.data_group", "LIKE");
+    PXOPT_COPY_S16(config->args, where, "-quality",     "skycalResult.quality", "==");
     PXOPT_COPY_S16(config->args, where, "-fault",      "skycalResult.fault", "==");
+
+    if (!pxskycellAddWhere(config, where)) {
+        psError(PXTOOLS_ERR_CONFIG, false, "failed to add skycell search arguments");
+        return false;
+    }
 
     PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
Index: /tags/ipp-20121218/ippTools/src/staticskytoolConfig.c
===================================================================
--- /tags/ipp-20121218/ippTools/src/staticskytoolConfig.c	(revision 34976)
+++ /tags/ipp-20121218/ippTools/src/staticskytoolConfig.c	(revision 34977)
@@ -51,5 +51,5 @@
     psMetadataAddStr(definebyqueryArgs,  PS_LIST_TAIL, "-select_skycell_id", 0, "search for skycell_id", NULL);
     psMetadataAddStr(definebyqueryArgs,  PS_LIST_TAIL, "-select_tess_id", 0, "search for tess_id", NULL);
-    psMetadataAddF32(definebyqueryArgs,  PS_LIST_TAIL, "-select_good_frac_min", 0, "define min good_frac", 0.0);
+    psMetadataAddF32(definebyqueryArgs,  PS_LIST_TAIL, "-select_good_frac_min", 0, "define min good_frac", NAN);
     psMetadataAddStr(definebyqueryArgs,  PS_LIST_TAIL, "-select_label", PS_META_DUPLICATE_OK, "search by stackRun label (LIKE comparison, multiple OK)", NULL);
     psMetadataAddStr(definebyqueryArgs,  PS_LIST_TAIL, "-select_data_group", PS_META_DUPLICATE_OK, "search by stackRun data_group (LIKE comparison, multiple OK)", NULL);
@@ -162,5 +162,5 @@
     psMetadataAddStr(defineskycalrunArgs,  PS_LIST_TAIL, "-select_skycell_id", 0, "search for skycell_id", NULL);
     psMetadataAddStr(defineskycalrunArgs,  PS_LIST_TAIL, "-select_tess_id", 0, "search for tess_id", NULL);
-    psMetadataAddF32(defineskycalrunArgs,  PS_LIST_TAIL, "-select_good_frac_min", 0, "define min good_frac", 0.0);
+    psMetadataAddF32(defineskycalrunArgs,  PS_LIST_TAIL, "-select_good_frac_min", 0, "define min good_frac", NAN);
     psMetadataAddStr(defineskycalrunArgs,  PS_LIST_TAIL, "-select_label", PS_META_DUPLICATE_OK, "search by stackRun label (LIKE comparison, multiple OK)", NULL);
     psMetadataAddStr(defineskycalrunArgs,  PS_LIST_TAIL, "-select_data_group", PS_META_DUPLICATE_OK, "search by stackRun data_group (LIKE comparison, multiple OK)", NULL);
@@ -257,5 +257,7 @@
     psMetadataAddStr(skycalresultArgs, PS_LIST_TAIL, "-label", 0, "search by label (LIKE comparison)", NULL);
     psMetadataAddStr(skycalresultArgs, PS_LIST_TAIL, "-data_group", 0, "search by data_group (LIKE comparison)", NULL);
+    psMetadataAddS16(skycalresultArgs, PS_LIST_TAIL, "-quality",  0, "search by quality", 0);
     psMetadataAddS16(skycalresultArgs, PS_LIST_TAIL, "-fault", 0, "search by fault code", 0);
+    pxskycellAddArguments(skycalresultArgs);
     psMetadataAddU64(skycalresultArgs, PS_LIST_TAIL, "-limit", 0, "limit skycalresult set to N items", 0);
     psMetadataAddBool(skycalresultArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);
