MYSQL选择列值与同一列中的另一个值匹配的位置

时间:2014-12-08 06:47:14

标签: php mysql twitter-bootstrap

我有一个数据库表,其中包含meta_id对应于meta_data列中数据的值。但现在我想在引导程序表中显示该数据。

我在php myadmin中有一个这样的表

enter image description here

我希望结果如下:

enter image description here

我目前已经写了这个查询,但我很困惑如何最好地做到这一点。

我想通过计算存在的行然后将它们除以表头数我应该得到表行循环,然后我可以插入我的表列但它仍然会创建比我需要的更多的列。

<?php     


$sql="SELECT * FROM table WHERE pid=".$this->item->id." ORDER BY meta_data ASC";
$db->setQuery($sql);
$db->query();

$count=$db->getNumRows();

$meta= $db->loadObjectlist(); 

foreach($meta as $data){ 
$metadata .=  '<td>'.$data->meta_data.'</td>'; 
} 

$count = $count/2; // i know there will be only two th's

?>

<table class="table table-striped">

<thead><tr><th>Item</th><th>Price</th></tr></thead>

<tbody>

<?php for ($x = 1; $x <= $count; $x++) { ?>

<tr><?php echo $metadata; ?></tr>

<?php } ?>

</tbody>

</table>

这是做什么的:

enter image description here

我越来越近了!

<?php 

$sql="

SELECT * FROM table WHERE pid=".$this->item->id." 

AND 

meta_id IN (SELECT meta_id FROM table GROUP BY meta_id HAVING COUNT(*) > 1)

";

$db->setQuery($sql);
$meta= $db->loadObjectlist(); 
foreach($meta as $data){ 
$metadata .=  '<tr><td>'.$data->meta_data.'</td></tr>'; 
} 

?>

<table class="table table-striped">

<thead><tr><th>Item</th><th>Price</th></tr></thead>

<tbody>

<?php echo $metadata; ?>

</tbody>

</table>

以上现在给我这个:

enter image description here

1 个答案:

答案 0 :(得分:1)

$sql="SELECT "put here column name you want to display in html table " 
FROM table WHERE pid=".$this->item->id." ORDER BY meta_data ASC";

例如:如果您的列名是Item&amp;价格比查询看起来像

$sql="SELECT Item,price  FROM table WHERE pid=".$this->item->id."
ORDER BY meta_data ASC";

所以你只得到物品和来自数据库的价格。

另一种方法是你可以在你的循环中做一些改变,如

foreach($meta as $data){ 
$metadata .=  '<td>'.$data->meta_data['Item'].'</td>
<td>'.$data->meta_data['Item'].'<td>'; 
}