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;