WordPressデータベースに2つのテーブルがあります。1つのテーブルは「users」であり、次の列が含まれています:ID、user_url、user_email
これを、user_ID、meta_key、meta_valueの列を含むが、最初に行を連結する必要がある2番目のテーブル「usermeta」に結合する必要があります。
user_id meta_key meta_value
1 first_name Joe
1 last_name Smith
2 first_name Jane
2 last_name Doe
になる必要があります
user_id meta_key meta_value
1 first_name,last_name Joe,Smith
2 first_name,last_name Jane,Doe
私は以下を使用してテーブルを結合することができました:
$result = mysql_query("SELECT * FROM users
INNER JOIN usermeta ON usermeta.user_id = users.ID
GROUP BY usermeta.user_id");
ただし、結果を出力/エコーする場合は、「echo $ row ['meta_value'];」指定されたIDの最初の行のみを返します。
グループ化しないと、user_idごとに複数の行が表示されます
以下を使用して連結作業を行うことができます。
$result = mysql_query("SELECT user_id, GROUP_CONCAT(meta_value) AS Customer_Address
FROM usermeta
WHERE usermeta.meta_key='first_name'
or usermeta.meta_key='last_name'
or usermeta.meta_key='paupress_address_one_1'
or usermeta.meta_key='paupress_address_city_1'
or usermeta.meta_key='paupress_address_state_1'
or usermeta.meta_key='paupress_address_postal_code_1'
or usermeta.meta_key='user_type'
or usermeta.meta_key='telephone'
or usermeta.meta_key='paupress_field_business'
GROUP BY user_id");
ただし、このソリューションでは最初のテーブルにアクセスできません。1つのテーブルを連結し、ユーザーIDに基づいて別のテーブルに結合して、電子メール、URL、および連結された「Customer_Address」の値を出力できるようにする方法が必要です。
いろいろな組み合わせやサブクエリを試しましたが、うまくいかないようです
最初のクエリと2番目のクエリを組み合わせる必要があります。これが要約版です:
SELECT u.user_id,
u.email,
u.url,
GROUP_CONCAT(meta_value) AS customer_address
FROM user u
JOIN usermeta um ON u.user_id = um.user_id
WHERE um.meta_key IN ('first_name','last_name')
GROUP BY u.user_id
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加