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-添加了编辑注释。这不是子查询。在一个循环中执行多个查询。