Php 在MySql连接中使用数组作为表

Php 在MySql连接中使用数组作为表,php,mysql,left-join,Php,Mysql,Left Join,我想使用数组中的数据添加一列,并在MySql表上进行连接 比如说,一方面,我们有一个数组($relevance): 另一方面,我们有以下表格(产品): 现在,我想从products表中选择数据,并根据它们的product\u id将它们与$relevance连接起来,以获得如下结果: product_id | product_name | relevance --------------------------------------- 1 | Product 1

我想使用数组中的数据添加一列,并在MySql表上进行连接

比如说,一方面,我们有一个数组($relevance):

另一方面,我们有以下表格(产品):

现在,我想从
products
表中选择数据,并根据它们的
product\u id
将它们与
$relevance
连接起来,以获得如下结果:

product_id  | product_name  | relevance
---------------------------------------
1           | Product 1     | 2
2           | Product 2     | 5
3           | Product 3     | 1
SELECT `p`.*, `{{$relevance}}`.* FROM `products` AS `p`
LEFT JOIN `{{$relevance}}`
ON p.product_id = {{$relevance}}.product_id
换句话说,我如何使用MySql数据库和数组中的数据进行左连接选择,其“含义”如下:

product_id  | product_name  | relevance
---------------------------------------
1           | Product 1     | 2
2           | Product 2     | 5
3           | Product 3     | 1
SELECT `p`.*, `{{$relevance}}`.* FROM `products` AS `p`
LEFT JOIN `{{$relevance}}`
ON p.product_id = {{$relevance}}.product_id

好的,您可以使另一个表具有相关性,然后您可以使用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];
}

如果您删除某些产品,并且这些ID不符合顺序,则此代码可能会失败,例如:1、2、5、6、7、10。我建议您使用另一个表。

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