получите меня последнее Изменение от Запроса Select в ниже данного условия

У меня есть Структура таблицы как

идентификатор, trackid, table_name, операция, oldvalue, newvalue, поле, changedonetime

Теперь, если у меня есть 3 строки для того же "trackid" то же "поле", затем как я могу выбрать последнее из трех?

т.е. для, например:

идентификатор = 100 trackid = 152 table_name = jos_menu операция = ОБНОВЛЯЕТ oldvalue = IPL newvalue = поле IPLcccc = имя, живое = 0 changedonetime = 30.04.2010 17:54:39

и

идентификатор = 101 trackid = 152 table_name = jos_menu операция = ОБНОВЛЯЕТ oldvalue = IPLcccc newvalue = поле IPL2222 = имя, живое = 0 changedonetime = 30.04.2010 18:54:39

Как Вы видите выше secind записи, последнее изменение, Теперь что запрашивает, я должен использовать для вытаскивания единственного и Последней строки из многих таких строк...

$distupdqry = "select DISTINCT trackid,table_name from jos_audittrail where live = 0 AND operation = 'UPDATE'";
$disupdsel = mysql_query($distupdqry);
$t_ids = array();
$t_table = array();
while($row3 = mysql_fetch_array($disupdsel))
{ 
 $t_ids[] = $row3['trackid'];
 $t_table[] = $row3['table_name'];
 //$t_table[] = $row3['table_name'];
}

//echo "<pre>";print_r($t_table);echo "<pre>";

//exit;
for($n=0;$n<count($t_ids);$n++)
{

   $qupd = "SELECT * FROM jos_audittrail WHERE operation = 'UPDATE'  AND trackid=$t_ids[$n] order by changedone DESC ";
 $seletupdaudit = mysql_query($qupd);
 $row4 = array();
 $audit3 = array();
 while($row4 = mysql_fetch_array($seletupdaudit))
 { 
  $audit3[] = $row4; 
 }   


  $updatefield = '';
  for($j=0;$j<count($audit3);$j++)
  {
   if($j == 0)
   {

    if($audit3[$j]['operation'] == "UPDATE")
    {
       //$insqry .= $audit2[$i]['operation']." ";
       //echo "<br>";
     $updatefield .= "UPDATE `".$audit3[$j]['table_name']."` SET ";

    }
   }

   if($audit3[$j]['operation'] == "UPDATE")
   {

    $updatefield .= $audit3[$j]['field']." = '".$audit3[$j]['newvalue']."', ";

   }

  }
  /*echo "<pre>";
 print_r($audit3);
 exit;*/
  $primarykey = "SHOW INDEXES FROM `".$t_table[$n]."` WHERE Key_name = 'PRIMARY'";
  $prime = mysql_query($primarykey);
  $pkey = mysql_fetch_array($prime);
  $updatefield .= "]";
     echo $updatefield = str_replace(", ]"," WHERE ".$pkey['Column_name']." = '".$t_ids[$n]."'",$updatefield); 
}

В вышеупомянутом коде я выбираю ou отличные идентификаторы, в которых операция обновления была сделана и затем соответственно запрашивает, запущен для получения всех изменений, сделанных на различных полях выбранных отличных идентификаторов... Здесь я создаю Запрос на обновление путем выборки записей от первоначально описанной таблицы, которая здесь упоминается как audittrail таблица... Поэтому мне нужно последнее внесенное изменение в поле так, чтобы только последнее изменение могло быть выбрано в запросах Select, которые я использовал...

пройдите код.. и посмотрите, как я могу внести необходимое изменение, в котором я нуждаюсь наконец..

1
задан Bill Karwin 3 May 2010 в 06:40
поделиться

1 ответ

Это еще один вопрос о категории с наибольшим числом n на группу, который задается несколько раз в неделю в Stack Overflow.

Вот как я могу решить эту проблему в вашем случае:

SELECT j1.*
FROM jos_audittrail j1 LEFT OUTER JOIN jos_audittrail j2
  ON (j1.trackid = j2.trackid AND j1.field = j2.field 
  AND j1.changedonetime < j2.changedonetime)
WHERE j2.id IS NULL;
2
ответ дан 3 September 2019 в 00:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: