Přepsání dotazu s použitím IFNULL do NDB

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
tatyalien
Člen | 239
+
0
-

Zdravím, mám dotaz… tenhle dotaz si sice můžu napsat růčo, ale jde nějak elegantně přepsat do NDB? Jde mě o to, že teď bych ještě na to měl napojovat podmínky WHERE na různé filtrování dat a v ručním zápisu to bude zase hrůza :-)

        $t = $this->table_menuleft_itemized;
        $g = $this->table_goods;
        $gd = $this->table_goods_data;

	// sloupce s jazykovou mutací - tabulka goods_data
        $pole = Array('name', 'description', 'specifications', 'describeShortly', 'keywords');
        $dotaz = '';
        $i = 1;
        $last = count($pole);
	// výběr jazykové mutace, defaultně se vybere mutace s language_id "1"
        foreach($pole as $val) {
            $dotaz .= "IFNULL((SELECT $val FROM $gd WHERE $gd.goods_catalog = $g.catalog AND ".
            "language_id = $language_id AND hidden = 0 LIMIT 1), (SELECT $val FROM $gd WHERE $gd.goods_catalog = $g.catalog".
            " AND language_id = 1 LIMIT 1)) AS $val";
            if($i != $last) {
                $dotaz .= ', ';
            }
            $i++;
        }
	// výběr produktů dle zatřízení
        $row = $this->database->query("SELECT $g.*, $dotaz".
        " FROM $g WHERE $g.catalog IN (SELECT goods_catalog FROM $t WHERE $t.menuleft_id = ?)", $id)->fetchAll();
        return $row;