MYSQL select列值与同一列中的另一个值匹配
我有一个数据库表,其中包含meta_id与meta_data列中的数据相对应的值。但是现在我想在引导表中显示这些数据。MYSQL select列值与同一列中的另一个值匹配
我有一个表像这样在PHP myadmin
我想结果是这样的:
我现在有这个疑问写上去,但即时通讯对如何最好地做到这一点感到困惑。
我认为通过计算存在的行,然后将它们除以表标题计数我应该得到表行循环,然后我可以插入我的表列,但它仍然创建比我需要更多的列。
<?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>
这是做这样的:
林越来越近!
<?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>
以上,现在是给我这样的:
$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";
例如:如果你的列名(或多个)项目&价格比查询样子
$sql="SELECT Item,price FROM table WHERE pid=".$this->item->id."
ORDER BY meta_data ASC";
所以你得到只有项目&价格fr om数据库。
另一种方法是你可以做出一些改变你的循环一样,
foreach($meta as $data){
$metadata .= '<td>'.$data->meta_data['Item'].'</td>
<td>'.$data->meta_data['Item'].'<td>';
}
@ShaliendraSharma谢谢你,我现在会测试这个 – jonnypixel 2014-12-08 06:55:47
哦..我没有物品和价格在我的表 – jonnypixel 2014-12-08 06:56:39
Phpmyadmin只包含数据的列。根据我在上面的screengrab – jonnypixel 2014-12-08 06:57:51
你必须检查元ID是相同的,那么它只要在同一行的meta_data。 – Lakhan 2014-12-08 07:28:09
@Lakhan谢谢你,是的,你完全正确。但是如何?我非常接近我的想法。我在这里发现了另一个问题,并尝试了mysql查询并且它越来越近了。我只需要了解如何现在格式化表格行。因为我认为查询正在工作。 – jonnypixel 2014-12-08 07:32:07
请尝试类似的那样。 $ new_array = array(); foreach($ old as $ data){foreach($ old as $ data1){if($ data == $ data1){$ new_array [] [] = $ data}}} 使用此概念类型来过滤你的数组。之后,你会执行你的最终new_array,如你所愿。 – Lakhan 2014-12-08 09:05:59