我刚刚开始深入研究$ wpdb SQL查询,并且正在努力理解我应该使用的语法。
我正在处理的WordPress网站是一个产品比较网站。它有一个审查系统作为其主题的一部分。但是审查系统没有比较元素,所以我试图在网站首页上自动生成一系列HTML表格,其中包含审核标准。
到目前为止,我已经找到了正确的数据库表(wp_6_postmeta)。该表由四个主要栏目组成:
meta_id POST_ID meta_key meta_value
meta_key列有数百个不同的字段,我现在正尝试针对四个特定标准:
_synopsis _特征 _specifications _length
理想情况下,我想要的是每次创建包含以下内容的新评论产品时添加的一系列表格:
概要 特征 产品规格 长度
...按产品分组。
所以我已经能够使用下面的代码来引入所有的_synopsis meta_key字段,但我也在努力引入_features等来在逻辑PHP循环中工作。
我需要知道的是我应该在foreach循环开始之前使用与初始get_results不同的语法(" SELECT ...行,或者我应该尝试在其中添加更多get_results代码我需要_features,_specifications和_length来显示。我已经尝试了这个但是再次包括foreach循环会导致结果问题混乱或者页面不显示在前端。
<?php
global $wpdb;
$result = $wpdb->get_results("SELECT * FROM wp_6_postmeta WHERE meta_key = '_synopsis'");
foreach ( $result as $print ) {
?>
<table border="1" style="width:20%;float:left;margin:15px;">
<tr>
<th>Meta ID</th>
<td><?php echo $print->meta_id;?></td>
</tr>
<tr>
<th>Post ID</th>
<td><?php echo $print->post_id;?></td>
</tr>
<tr>
<th>Meta Value (Synopsis)</th>
<td><?php echo $print->meta_value;?></td>
</tr>
<tr>
<th>Meta Value (Features)</th>
<td><?php echo $print->meta_value;?></td>
</tr>
<tr>
<th>Meta Value (Specifications)</th>
<td><?php echo $print->meta_value;?></td>
</tr>
<tr>
<th>Meta Value (Length)</th>
<td><?php echo $print->meta_value;?></td>
</tr>
</table>
<?php
}
?>
答案 0 :(得分:0)
在SQL中,我很想把它作为一个直接的支点,所以像这样:
SELECT entity
, MAX(CASE WHEN attribute = 'a' THEN value END) a
, MAX(CASE WHEN attribute = 'b' THEN value END) b
, etc.
GROUP
BY entity