我想使用数组中的数据来添加列,并在MySql表上进行连接。
假设,一方面,我们有一个数组($relevance):
$relevance = array(
array('product_id' => 1, 'relevance' => 2),
array('product_id' => 2, 'relevance' => 5),
array('product_id' => 3, 'relevance' => 1),
);另一方面,我们有这个表(products):
product_id | product_name
--------------------------
1 | Product 1
2 | Product 2
3 | Product 3现在,我想从products表中选择数据,并基于它们的product_id将它们与$relevance连接起来,以获得如下所示:
product_id | product_name | relevance
---------------------------------------
1 | Product 1 | 2
2 | Product 2 | 5
3 | Product 3 | 1换句话说,我如何使用来自MySql数据库和数组的数据进行带有左连接的SELECT操作,其“含义”如下:
SELECT `p`.*, `{{$relevance}}`.* FROM `products` AS `p`
LEFT JOIN `{{$relevance}}`
ON p.product_id = {{$relevance}}.product_id发布于 2013-07-22 23:24:29
纯sql解决方案,尽管对于大型记录集来说效率不高:
$relevances = array()
foreach ($relevance as $v){
$relevances[] = "SELECT {$v['product_id']} as product_id, {$v['relevance']} as relevance"
}
$sql = implode(' UNION ', $relevances);
$sql = "SELECT p.product_id, p.product_name, r.relevance
FROM products p
JOIN ($sql) r ON p.product_id=r.product_id";发布于 2013-07-22 21:51:09
那么,您可以创建另一个表关联,然后只需使用JOIN即可。或者,您可以使用循环来获取这些数据。就像这样
$relevance = array(
array(1, 'relevance' => 2),
array(2, 'relevance' => 5),
array(3, 'relevance' => 1),
);
$q = mysql_query("SELECT * FROM products")
while($r = mysql_fetch_assoc($q))
{
$productRelevance = $relevance[$r['prod_id']-1];
}Hoewever如果您删除了某些产品,并且这些ids不是按顺序排列的,则此代码可能会失败,例如:1、2、5、6、7、10。我建议您使用其他表。
https://stackoverflow.com/questions/17788954
复制相似问题