0

我在 Mysql 中有这个查询

SELECT z.virtuemart_product_id,z.product_name,d.product_price FROM x5lui_virtuemart_products x
  inner join x5lui_virtuemart_products_en_gb z on x.virtuemart_product_id=z.virtuemart_product_id
  inner join x5lui_virtuemart_product_prices d on d.virtuemart_product_id=z.virtuemart_product_id
where x.published=1;

结果是

18, 'Product 1', 600.00000
19, 'Product 2', 1200.0000
20, 'Product 3', 1800.00000

但我需要结果是这样的

'18', '19', '20'
'Product 1', 'Product 2', 'Product 3'
600.00000 , 1200.0000, 1800.00000

我怎样才能做到这一点?

4

2 回答 2

2

我不确定你为什么需要这个,但你唯一能做的就是循环你的查询结果:

foreach( $results as $result ){
   $array['ids'][]    = $result['virtuemart_product_id'];
   $array['names'][]  = $result['product_name'];
   $array['prices'][] = $result['product_price'];
}
于 2012-05-12T16:51:56.447 回答
1

或者,您可以使用 GROUP_CONCAT 在查询结果中获取这些结果。这是一个简单的 Virtumart 示例,您必须适应在您的问题中使用所有其他表格。

SELECT GROUP_CONCAT(product_id SEPARATOR '|') FROM jos_vm_product WHERE product_publish='Y'
UNION
SELECT GROUP_CONCAT(product_name SEPARATOR '-') FROM jos_vm_product WHERE product_publish='Y'
UNION
SELECT GROUP_CONCAT(product_price SEPARATOR '^') FROM jos_vm_product_price

好的,我找到了

SELECT GROUP_CONCAT(product_id, '{ITEM}') FROM jos_vm_product WHERE product_publish='Y'
UNION
SELECT GROUP_CONCAT(product_name, '{ITEM}') FROM jos_vm_product WHERE product_publish='Y'
UNION
SELECT GROUP_CONCAT(product_price, '{ITEM}') FROM jos_vm_product_price
于 2012-05-12T16:54:45.933 回答