У меня есть 2 таблицы типа
work_assets ----------------------------------------------------- id | asseturl | previmgurl | carid ----------------------------------------------------- 1 | "pic1.jpg" | "pic2.jpg" | 1 2 | "pic3.jpg" | "pic4.jpg" | 1 3 | "pic5.jpg" | "pic6.jpg" | 2 . | ... | ... | . . | ... | ... | . cases ----------------------------------------------------- id | ... | carid | ... ----------------------------------------------------- 1 | ... | 1 | ... 2 | ... | 2 | ... 3 | ... | 69 | ... . | ... | ... | ... . | ... | ... | ...
и я надеюсь, что я смогу выполнить некоторый тип запроса Q
который может привести меня к JSON, который в основном представляет собой таблицу cases
с отношением «один ко многим» от ее carid
colummn к связанным с ним asseturl
и previmgurl
, например
[ { id : 1, ..., assetinfo: [ { asseturl : "pic1.jpg", previmgurl: "pic2.jpg"}, { asseturl : "pic3.jpg", previmgurl: "pic4.jpg"} ], ... }, { id : 2, ... }, { id: 3, ... }, . . . ]
Настроить:
var cases = <?php $Q = ????; echo json_encode($wpdb->get_results($Q)); ?>
Это возможно?
IMHO вам действительно не нужно делать это json-преобразование на стороне mysql, потому что оно не очень эффективно и почти не имеет смысла.
Но просто чтобы показать, что это возможно (в противоположность мнению @bannmatt), вот мой подход:
http://sqlfiddle.com/#!9/6bffb/7
SELECT c.*, CONCAT('assetinfo : [ ', COALESCE( GROUP_CONCAT( CONCAT("{ asseturl: ", wa.asseturl, ', previmgurl: ', wa.previmgurl," }") ), ''), ' ]') FROM cases c LEFT JOIN work_assets wa ON c.carid = wa.carid GROUP BY c.id
К сожалению, я не думаю, что вы сможете получить один SQL-запрос из своей базы данных, который будет сериализоваться в JSON так, как вы хотите, потому что описываемая вами структура многомерна, т. Е. Массив, вложенный в другой массив.