MYSQLの1つの属性に複数の属性がある場合、
5763 ワード
select p.name, c.name as category, price, sizes.size from products as p join categories as c on category_id=c.id join product_size as ps on ps.product_id=p.id join sizes on ps.size_id=sizes.id where c.name="러그" group by p.name, price, size;
nameにはそれぞれpriceとsizeがあります.
priceがあれば、priceで
JSON_ARRAYAGG
を使ってバンドルできますが、属性が2種類あるので難しいです.もし価格が1つしか縛られていなかったら.
JSON_ARRAYAGG
に2種類(size,price)を加えると文法エラーが発生します.サイズによる価格なので、サイズと価格を同梱しても大丈夫なので、価格を身長と価格に変えた
JSON_OBJECT
を使うことにしました.JSON_OBJECT(key, value)
// 결과
{key:value}
これは結果値であるため、JSON_ARRAYAGG
によってバンドルすることができる.select p.name, JSON_ARRAYAGG(JSON_OBJECT(size,price)) as prices from product_size join sizes on size_id=sizes.id join products as p on p.id=product_id join categories as c on c.id=p.category_id where c.name='러그' group by product_id;
prismaで送信されるjsonフォーマットは次のとおりです.
属性値がkeyやvalueのようにちょうどいい距離ではなく重複している場合、
JSON_ARRAYAGG
を2回使用すればよい.select p.name, JSON_ARRAYAGG(price) as prices, JSON_ARRAYAGG(size) as sizes from product_size join sizes on size_id=sizes.id join products as p on p.id=product_id join categories as c on c.id=p.category_id where c.name='러그' group by p.name
Reference
この問題について(MYSQLの1つの属性に複数の属性がある場合、), 我々は、より多くの情報をここで見つけました https://velog.io/@wjdghks963/MYSQL-하나의-속성에-여러가지의-속성이-붙을때テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol