首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MySql JOIN中使用数组作为表

在MySql JOIN中使用数组作为表
EN

Stack Overflow用户
提问于 2013-07-22 21:32:33
回答 2查看 4.8K关注 0票数 1

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

假设,一方面,我们有一个数组($relevance):

代码语言:javascript
复制
$relevance = array(
  array('product_id' => 1, 'relevance' => 2),
  array('product_id' => 2, 'relevance' => 5),
  array('product_id' => 3, 'relevance' => 1),
);

另一方面,我们有这个表(products):

代码语言:javascript
复制
product_id  | product_name
--------------------------
1           | Product 1
2           | Product 2
3           | Product 3

现在,我想从products表中选择数据,并基于它们的product_id将它们与$relevance连接起来,以获得如下所示:

代码语言:javascript
复制
product_id  | product_name  | relevance
---------------------------------------
1           | Product 1     | 2
2           | Product 2     | 5
3           | Product 3     | 1

换句话说,我如何使用来自MySql数据库和数组的数据进行带有左连接的SELECT操作,其“含义”如下:

代码语言:javascript
复制
SELECT `p`.*, `{{$relevance}}`.* FROM `products` AS `p`
LEFT JOIN `{{$relevance}}`
ON p.product_id = {{$relevance}}.product_id
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-22 23:24:29

纯sql解决方案,尽管对于大型记录集来说效率不高:

代码语言:javascript
复制
$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";
票数 2
EN

Stack Overflow用户

发布于 2013-07-22 21:51:09

那么,您可以创建另一个表关联,然后只需使用JOIN即可。或者,您可以使用循环来获取这些数据。就像这样

代码语言:javascript
复制
$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。我建议您使用其他表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17788954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档