1

私は明らかにWordPressデータベースを備えたWordPressブログを持っています。

データベース名:wordpress

通信する 2 つのテーブルはwp_userswp_usermetaです。

テーブルusermetaには、列user_idmeta_key、およびがありmeta_valueます。

user_id   meta_key          usermeta

1         name              mark
1         userurl           mark.com
1         points            8

2         name              luke
2         userurl           luke.com
2         points            4

2         name              frank
2         userurl           frank.com
2         points            6

このように特定のページにデータを表示し、ポイント値の降順に並べ替えます。

Name: Mark
User Blog: mark.com
points: 8

Name: Frank
User Blog: mark.com
points: 6

Name: Luke
User Blog: luke.com
points: 4

私はこのようなコードを使用しましたが、明らかに機能しません:

$sql =
    "SELECT user_id, meta_key, meta_value" .
    " FROM wp_usermeta" .
    " WHERE meta_key IN ('name','userurl','points')" .
    " ORDER BY meta_value DESC";

$usermeta = $wpdb->get_results($sql);

print("<ul>");
foreach ($usermeta as $post)
{
    print('<li>' . $post->meta_value . '<br/>');
    print('</li><br><br>');
}
print("</ul>");
4

3 に答える 3

0

これを試して

     SELECT `user_id`,
     max(case when  `meta_key` = 'name' then `usermeta` end)  as name  ,
     max(case when  `meta_key` = 'userurl' then `usermeta` end) as website ,
     max(case when  `meta_key` = 'points' then `usermeta` end ) as points 
     FROM wp_usermeta
     GROUP BY `user_id`           
     ORDER BY points DESC

デモはこちら

  • 挿入、更新、および選択をより適切かつ簡単にするために、そのようにテーブルを構成する必要があります。

    user_id   name     userurl    points 
      1       mark     mark.com     8
      2       luke     luke.com     4
      3       frank    frank.com    6
    

そして、このクエリを実行します

   select * from table order by points

編集:

   $usermeta = $wpdb->get_results($sql) or die(mysql_error()) ;

 echo"<ul>";
 foreach ($usermeta as $post)
 {
 echo "<li>" . $post->name ." have ".$post->points. " Points </li><br /><br />" ;

 }
 echo "</ul>";
于 2013-09-19T17:36:06.950 に答える