私は3つのテーブルを持っています:
product:
id
name
product_image:
product_id
url
product_detail:
product_id
_key
value
私がやりたいのは、特定の製品に関するすべての情報を 1 つのクエリで取得することだけです。group_concatenated 画像と詳細を取得していますが、グループ化に問題があります (そう思います)。時々、二重の画像が表示されます。私のクエリは次のとおりです。
SELECT p.id, p.name,
GROUP_CONCAT(i.url ORDER BY i.id ASC SEPARATOR "{^sep^}") as imgs,
GROUP_CONCAT(d._key, "{^val^}", d.value ORDER BY d.id asc separator "{^sep^}") AS details
FROM product p
LEFT JOIN product_image i ON p.id = i.product_id
LEFT JOIN product_detail d ON p.id = d.product_id
WHERE p.id = ...
GROUP BY i.product_id, d.product_id
ORDER BY p.id ASC LIMIT ...;
ところで、私は "{^sep^}" をセパレーターとして使用して、後で (php で) 結果を爆発させています。URL(および詳細)が間違った方法で展開されないようにしたかったのです(たとえば、区切り文字として「、」を使用し、一部のURLにも「、」が含まれていた場合)。これは良いアプローチですか?