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 に答える