public function mysqlQueryNot($tableName) { if (!$this->hasColumn("array", $this->path)) { return "1 /* " . JsonStoreSearch::$INCOMPLETE_TAG . ": can't check array items at {$this->path} */"; } $columnName = "array" . $this->path; $parentConfig = $this->config; $itemSchema = $this->values; $arrayConfig = $parentConfig['columns'][$columnName]; $subSearch = new JsonStoreSearch($arrayConfig, $itemSchema, ""); $subTable = new JsonStoreQueryConstructor($arrayConfig['table'], $tableName . "_items"); $subSql = $subSearch->mysqlQueryNot($subTable); $joinOn = $subSearch->tableColumn($subTable, "group") . " = " . $this->tableColumn($tableName, $arrayConfig['parentColumn']); $joinOn .= " AND " . $subSql; if (isset($arrayConfig['parentColumn'])) { $tableName->addLeftJoin($subTable, $joinOn); } else { $tableName->addLeftJoin($subTable, $joinOn); } return $subSearch->tableColumn($subTable, "group") . " IS NOT NULL"; }