複数の行と別のテーブルの列からCONCATENATE A行

mrtkprc:

私はWooCommerce関連のアプリケーションを開発しました。したがって、私はWooCommerceのデータベーステーブルを使用する必要があります。

私はポイントで立ち往生しています。私はforeign_idた複数の行を持つ別のテーブルにテーブルを連結したいです。

例えば:

WooCommerceで2つのテーブルがあります。これらは、wp_postswp_postmeta

wp_posts次の表が含まれています。

| ID   | post_title | post_name
| 1682 | foo        | foo
| 1681 | bar        | bar

wp_postmeta次の表が含まれています。

| post_id | meta_key              | meta_value
| 1682    | _regular_price        | 100
| 1682    | _sale_price           | 99
| 1681    | _regular_price        | 300
| 1681    | _sale_price           | 299

私は、次の表に結果のSQLクエリを記述したいと思います。

| ID   | post_title | post_name  | _regular_price | _sale_price |
| 1682 | foo        | foo        | 100            | 99
| 1681 | bar        | bar        | 300            | 299

どうもありがとうございます。

ではごきげんよう、

GMB:

条件付きの集約を使用します。

select
    p.id,
    p.post_title,
    p.post_name,
    max(case when m.meta_key = '_regular_price' then m.meta_value end) regular_price,
    max(case when m.meta_key = '_sale_price'    then m.meta_value end) sale_price
from wp_posts p
inner join wp_postmeta m on m.post_id = p.id
group by p.id, p.post_title, p.post_name

メタテーブルはポストごとの行数が多い場合は、次のようにクエリを最適化することができwhere句:

where m.meta_key in ('_regular_price', '_sale_price')

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=298907&siteId=1