我正在尝试使用MySQL加入6个不同的表,但有些表有嵌套或很多项。我试图让这些表看起来像下面的JSON示例。
我不知道任何好的数据库建模/架构软件或应用程序,所以这里是我的纯文本表格。如果您有任何建议,那将是很好听的,但我的主要问题是找到一种以嵌套格式连接这些表的方法。 PS我在OSX上
这是我的表格
/**
* survey_tbl <- has many
* survey_vs_template_tbl
* template_items_tbl <- has many
* items_tbl
* template_item_response_tbl <- has many
* responses_tbl
**/
所以在伪格式中,sql应该
所以我让SQL使用JOINS接收所有这些数据,但是将它嵌入数组是我的问题。
$sql = "SELECT * FROM survey_tbl
INNER JOIN survey_vs_template_tbl ON survey_vs_template_tbl.survey_id = survey_tbl.survey_id
INNER JOIN template_items_tbl ON template_items_tbl.template_id = survey_vs_template_tbl.template_id
INNER JOIN items_tbl ON items_tbl.item_id = template_items_tbl.template_id
LEFT OUTER JOIN template_item_response_tbl ON template_item_response_tbl.template_item_id = template_items_tbl.template_item_id
LEFT OUTER JOIN responses_tbl ON responses_tbl.response_id = template_items_tbl.template_id
WHERE client_id='{$this->userId}'";
这是我的JSON示例。唯一使用模板表是将相应的模板与实际项匹配。
{
"surveys": [
{
"name": "some random survey",
"due": "03/01/2016",
"items": [
{
"itemId": 1,
"itemTitle": "Did you have a good day?",
"responses": [
{
"responseId": 1,
"responseText": "Yes"
},
{
"responseId": 2,
"responseText": "No"
}
]
}
]
}
]
}
我知道我可以通过这些数据循环并加入我能做的事情,我只是觉得SQL会有某种嵌套功能。