2

データベース内のすべての製品 (約 600 000) から XML ファイルを生成する必要があります。問題は、すべての製品のカテゴリとコードをそのファイルに入れる必要があることです。一部の製品には 30 のカテゴリと 10 のコードがあり、これは非常に苦痛です。これを単一の効果的なクエリで作成することは可能ですか、または現在のソリューションを改善する方法のヒントを教えてください:

SELECT * FROM products

そして、すべての製品について、コードとカテゴリを取得しています。

SELECT * FROM categories WHERE productid=[productid]

SELECT * FROM codes WHERE productid=[productid]

アドバイスをありがとう

4

1 に答える 1

0

多分あなたはで遊ぶことができますGROUP_CONCAThttp://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat

SELECT
  products.*,
  all_prod_categories.*
  all_prod_codes.*

FROM products

INNER JOIN
  (SELECT
     -- Who guarantees that all fields will be concated in the same order?
     -- Nobody :)
     GROUP_CONCAT( categories.id            ) AS all_prod_cat_ids,
     GROUP_CONCAT( categories.category_name ) AS all_prod_cat_names,
     ...
   FROM     categories
   GROUP BY categories.productid
  ) AS all_prod_categories ON categories.productid = products.id

INNER JOIN
  (SELECT
     GROUP_CONCAT( codes.id        ) AS all_prod_code_ids,
     GROUP_CONCAT( codes.code_name ) AS all_prod_code_names,
     ...
   FROM     codes
   GROUP BY codes.productid
  ) AS all_prod_codes ON codes.productid = products.id
于 2013-01-27T12:30:33.463 に答える