Php 按循环查询值排序mysql结果

Php 按循环查询值排序mysql结果,php,mysql,Php,Mysql,我正在做以下工作 $def = $_GET['def']; if (!$def == 0) {$offset = 'OFFSET '.$def.'';} $data1 = mysql_query( "SELECT *, DATE(post_modified) as nicedate FROM (`wp_postmeta`) LEFT JOIN (`wp_posts`) ON wp_postmeta.post_id = wp_posts.ID LEFT J

我正在做以下工作

$def = $_GET['def']; if (!$def == 0) {$offset = 'OFFSET '.$def.'';}
$data1 = mysql_query(
   "SELECT *, DATE(post_modified) as nicedate 
     FROM (`wp_postmeta`) 
     LEFT JOIN (`wp_posts`) ON wp_postmeta.post_id = wp_posts.ID 
     LEFT JOIN (`wp_top_ten`) ON wp_posts.ID = wp_top_ten.postnumber 
     WHERE meta_value='the_value' 
     ORDER BY nicedate DESC LIMIT 16 ".$offset.""
                   ) or die(mysql_error()); 
   while($info = mysql_fetch_array( $data1 ))

 { 
   $id = $info['ID']; 
   echo "some stuff";
   $data2 = mysql_query("
                 SELECT SUM(vote) as total_vote, COUNT(*) as total_count 
                 FROM (`wp_gdsr_votes_log`) 
                 WHERE id='".$id."' AND vote_type='article'
                    ")  or die(mysql_error()); 
        while($info = mysql_fetch_array( $data2 ))
     {$vote = number_format(
            ($info['total_vote']/$info['total_count'])
                        , 2, '.', ' ');} 
             echo $vote."/5"; echo "some more stuff"; 
 } 

如何在
$data1
中对结果进行排序,其中'nicedate'将是
$vote
值?

您可以创建数组,以便在循环的每一轮之后填充。类似于(在获取$data1的结果之后):

在$data1之前定义一个空数组

$newarray = array();
然后,在第二个循环中:

$nicedate = info['nicedate'];

$newarray[$nicedate] = $vote;

你最终得到了一个
数组('date'=>'vote','date2'=>'vote2',…)
,你可以随意排序。

这里是一个猜测,因为我没有你的数据,所以无法测试它。但是,根据理论,您应该能够以这种方式组合查询和排序

SELECT *, DATE(post_modified) as nicedate, 
  SUM(vlog.vote) as total_vote, COUNT(vlog.*) as total_count
  (total_vote/total_count) as vote
  FROM wp_postmeta AS meta
  LEFT JOIN wp_posts AS posts  ON meta.post_id = posts.ID 
  LEFT JOIN wp_top_ten AS tten ON posts.ID = tten.postnumber 
  LEFT JOIN wp_gdsr_votes_log AS vlog ON posts.ID = vlog.id
  WHERE meta_value='the_value' 
    AND vlog.vote_type='article'
  GROUP BY vlog.id 
  ORDER BY vote DESC, nicedate DESC 
  LIMIT 16 $offset
希望我已经足够接近你想要的了,至少我几乎可以做到。 我现在为其中任何愚蠢的错误道歉

如果您认为合适,请随意进行编辑。记下你改变了什么


编辑:

1.Gutterball-添加了编辑注释。

这不是子查询。在一个循环中执行多个查询。