現在、1つのテーブルを除くすべてのデータを返すクエリが成功しました。最後のテーブルには、1対多の関係(1つの製品、関連データを含む複数のレコード)のメタデータが含まれています。
mysql_fetch_array()コマンドを使用してPHPで設定されたレコードに引き続きアクセスできるように、既存のクエリの最後に値を持つフィールドを追加する方法はありますか?
基本的に、製品IDを持つレコードをクエリしてから、複数のフィールドを追加します。
それについて考えた後、私は実際にレコードセット内に配列(つまり、メタデータの結果の配列)を含めて、PHPを介してそれにアクセスできるかどうか疑問に思いましたか?
作業クエリ:
SELECT offers.*, c.short_name AS sponsorName, c.logo AS sponsorLogo
FROM offers LEFT JOIN sponsors AS c ON c.id=offers.sponsor ORDER BY end_date ASC
結果:
ID: 43875
category: 1
state: CO
city: Denver
zip: 80221
sponsor: 1
title: The coolest thing ever
duration: 2 years
price: 10
frequency:: Month
適切なメタデータを取得する2番目のクエリ-
SELECT mo.`name` AS meta_value FROM offer_metas
LEFT JOIN meta_options AS mo ON mo.id = offer_metas.meta_option
WHERE offer_id='48735' ORDER BY meta_option ASC
結果:
meta_value:
'5-10 tickets'
'General Admission'
これらの2つのフィールドをレコードの一番上に追加したいのですが、クエリ結果内のすべてのフィールドを単一の既存のレコードに追加する方法がわかりません。
-解決済み--
クエリは、次のようにGROUP_CONCATを考慮して調整されました
SELECT
offers.*,
s.short_name AS sponsorName,
s.logo AS sponsorLogo,
GROUP_CONCAT( mn.title) titles,
GROUP_CONCAT( mo.`name`) metas
FROM offers
LEFT JOIN sponsors AS s ON s.id = offers.sponsir
INNER JOIN offer_metas ON offer_metas.offer_id = offers.id
INNER JOIN meta_options as mo ON offer_metas.meta_option = mo.id
INNER JOIN meta_names as mn ON mo.category = mn.category AND mo.cat_seq = mn.seq
ORDER BY end_date ASC
このような「タイトル」と「メタ」という2つのフィールドを含むデータ結果は良好に見えました
titles: 'Number of Tickets,Purchased Seats'
metas: '5-10,General Administration'
これで、PHPで作業できます..同じ数の要素があるので、それらを配列に解析して、より適切に作業できます:)