Jak na orderBy podle pozice v IN?
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Zuben45
- Člen | 268
Dobrý den, potřeboval bych poradit. Mám výběr produktů a potřeboval bych je seřadit podle toho jak je mám v poli.
Zkoušel jsem to následovně (a mnoho jinými způsoby), ovšem nefunguje ($array nemám takhle nastaven, dostávám ho od jinud, jen aby bylo vše pohromadě).
$array=array(000001081900100381,000000367700103002,000001558100109422,000001457600120115,000001567600102815,000001528300110476,000000317000100737,000000317000100737,000001593100106836);
$this->template->lastvisited = $this->products->connection
->select('*')
->from('CENKTGM01,CENKTGK16')
->where('CENKTGM01.OID$CENKTGM01 = CENKTGK16.OID$CENKTGM01
AND CENKTGM01.OID$CENKTGM01 IN(?)',$array)
->orderBy('%by',$array);
Editoval Zuben45 (3. 12. 2015 16:32)
- Zuben45
- Člen | 268
Ano to vím a děkuji za odpověď :), zapomněl jsem zmínit že se jedná o Firebird/dibi.
Tak jsem to prozatím pořešil následovně
foreach($lastvisitedProducts as $key => $k)
{
$ku = $key+1;
$test .= ' WHEN "'.$k.'" THEN '.$ku;
}
//$this->template->lastvisited = $this->visitedData;
$this->template->lastvisited = $this->products->connection->select('*')->from('CENKTGM01,CENKTGK16')->where('CENKTGM01.OID$CENKTGM01 = CENKTGK16.OID$CENKTGM01 AND CENKTGM01.OID$CENKTGM01 IN(?)',$lastvisitedProducts)->orderBy('(CASE CENKTGM01.OID$CENKTGM01 '.$test.' end)');
Editoval Zuben45 (4. 12. 2015 7:47)