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
+
0
-

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)

CZechBoY
Člen | 3608
+
+2
-

Pro MySQL funguje:

$db->order('FIELD(sloupec, ?)', $poradi);
Zuben45
Člen | 268
+
0
-

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)