2014-12-08 210 views
-1

我有一个数据库表,其中包含meta_id与meta_data列中的数据相对应的值。但是现在我想在引导表中显示这些数据。MYSQL select列值与同一列中的另一个值匹配

我有一个表像这样在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

+0

你必须检查元ID是相同的,那么它只要在同一行的meta_data。 – Lakhan 2014-12-08 07:28:09

+0

@Lakhan谢谢你,是的,你完全正确。但是如何?我非常接近我的想法。我在这里发现了另一个问题,并尝试了mysql查询并且它越来越近了。我只需要了解如何现在格式化表格行。因为我认为查询正在工作。 – jonnypixel 2014-12-08 07:32:07

+0

请尝试类似的那样。 $ 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

回答

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"; 

例如:如果你的列名(或多个)项目&价格比查询样子

$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>'; 
} 
+0

@ShaliendraSharma谢谢你,我现在会测试这个 – jonnypixel 2014-12-08 06:55:47

+0

哦..我没有物品和价格在我的表 – jonnypixel 2014-12-08 06:56:39

+1

Phpmyadmin只包含数据的列。根据我在上面的screengrab – jonnypixel 2014-12-08 06:57:51

相关问题