0

まだ高度な mySql クエリを学習しようとしていますが、いくつかの用語が間違っている場合はご容赦ください。e コマース プラットフォームからデータをエクスポートしようとしていますが、必要なデータの一部はルックアップ テーブルにあります。問題は、1 つのルックアップ テーブルに複数の値を関連付けることができ、データを取得する必要があるシステムです。その列には特定の形式が必要です。

それが役立つ場合は、ソースとして禅カートを使用しています。以下はクエリです。

Select zp.products_id as id, zpd.products_name as name, products_price_w as cost, products_price as price, zp.products_date_added as date_created, zp.products_image as thumbnail
FROM `zen_products` as zp
LEFT JOIN `zen_products_description` as zpd ON zp.products_id = zpd.products_id
WHERE zp.products_status = 1
ORDER BY zp.products_id ASC;

必要なのは、各製品に属するカテゴリを示す参照テーブルです。別の結合になることはわかっていますが、複数のカテゴリが製品に属している場合、同じ列に入れる必要があります。それらを@記号で結合します。これはカテゴリのIDではなくパスであるため、パスを取得するにはカテゴリIDを別のテーブルで検索する必要があります。

たとえば、「category1/subcategory@category2」です。

ご指導ありがとうございます。

編集:必要な結果の2倍を取得しているため、結果をマージする必要がありますが、これに含まれる各カテゴリのレコードが表示されます..

Select zp.products_id as id, zpd.products_name as name, zcd.categories_name as categories, products_price_w as cost, products_price as price, zp.products_date_added as date_created, zp.products_image as thumbnail
FROM `zen_products` as zp
INNER JOIN `zen_products_description` as zpd ON zp.products_id = zpd.products_id
INNER JOIN `zen_products_to_categories`as zptc ON zp.products_id = zptc.products_id
INNER JOIN `zen_categories_description` as zcd on zptc.categories_id = zcd.categories_id
WHERE zp.products_status = 1
ORDER BY zp.products_id ASC;
4

1 に答える 1

0

あなたが探しているのは ですgroup_concat()。私はそれが次のようなものになると思います:

Select zp.products_id as id, zpd.products_name as name,
       group_concat(zcd.categories_name separator '@') as categories,
       products_price_w as cost, products_price as price,
       zp.products_date_added as date_created, zp.products_image as thumbnail
FROM `zen_products` as zp
INNER JOIN `zen_products_description` as zpd ON zp.products_id = zpd.products_id
INNER JOIN `zen_products_to_categories`as zptc ON zp.products_id = zptc.products_id
INNER JOIN `zen_categories_description` as zcd on zptc.categories_id = zcd.categories_id
WHERE zp.products_status = 1
group by zp.products_id
ORDER BY zp.products_id ASC;
于 2013-07-14T15:42:57.547 に答える