Всем привет. Вот скрин моей схемы
Я хочу сделать запрос без дубликатов и потерей полей.
SELECT
*
FROM
`strategy`
LEFT JOIN strategyoptions ON strategyoptions.strategy_id=strategy.id
Вот результат этого запроса:
Как видно из картинки, у меня есть несколько полей дубликатов Nokia с разными полями options_id
. Это значит, что при передаче результата запроса он будет выглядеть вот так:
{
"id": "1",
"strategy_title": "Nokia",
"strategy_description": "Lorem ipsum dolor sit amet",
"strategy_current_money": "9000",
"risk_colors_id": "1",
"color_name": "green",
"color_number": "#96D062",
"risk_value": "10",
"options_id": "1",
"strategy_id": "1",
"options_value": "5"
}, {
"id": "2",
"strategy_title": "Nokia",
"strategy_description": "Lorem ipsum dolor sit amet",
"strategy_current_money": "9000",
"risk_colors_id": "1",
"color_name": "green",
"color_number": "#96D062",
"risk_value": "10",
"options_id": "2",
"strategy_id": "1",
"options_value": "3"
}, {
"id": "8",
"strategy_title": "Nokia",
"strategy_description": "Lorem ipsum dolor sit amet",
"strategy_current_money": "9000",
"risk_colors_id": "1",
"color_name": "green",
"color_number": "#96D062",
"risk_value": "10",
"options_id": "3",
"strategy_id": "1",
"options_value": "2"
}, {
"id": "9",
"strategy_title": "Nokia",
"strategy_description": "Lorem ipsum dolor sit amet",
"strategy_current_money": "9000",
"risk_colors_id": "1",
"color_name": "green",
"color_number": "#96D062",
"risk_value": "10",
"options_id": "4",
"strategy_id": "1",
"options_value": "6"
}, {
"id": "10",
"strategy_title": "Nokia",
"strategy_description": "Lorem ipsum dolor sit amet",
"strategy_current_money": "9000",
"risk_colors_id": "1",
"color_name": "green",
"color_number": "#96D062",
"risk_value": "10",
"options_id": "5",
"strategy_id": "1",
"options_value": "4"
},
Можно ли составить sql запрос так, чтобы не было дублированных строк? А именно:
{
"id": "1",
"strategy_title": "Nokia",
"strategy_description": "Lorem ipsum dolor sit amet",
"strategy_current_money": "9000",
"risk_colors_id": "1",
"color_name": "green",
"color_number": "#96D062",
"risk_value": "10",
"options_id": "1",
"strategy_id": "1",
"options_value": "5",
"options_id": "2",
"strategy_id": "1",
"options_value": "3",
"options_id": "3",
"strategy_id": "1",
"options_value": "2",
"options_id": "4",
"strategy_id": "1",
"options_value": "6",
"options_id": "5",
"strategy_id": "1",
"options_value": "4"
}
Приведенный вами желаемый JSON не является валидным, т.к. содержит одинаковые имена полей объекта. На вашем месте я бы делал такой JSON
{
"id":"1",
"strategy_title":"Nokia",
"strategy_description":"Lorem ipsum dolor sit amet",
"strategy_current_money":"9000",
"risk_colors_id":"1",
"color_name":"green",
"color_number":"#96D062",
"risk_value":"10",
"options": [
{"options_id":"1","strategy_id":"1","options_value":"5"},
{"options_id":"2","strategy_id":"1","options_value":"3"},
{"options_id":"3","strategy_id":"1","options_value":"2"},
{"options_id":"4","strategy_id":"1","options_value":"6"},
{"options_id":"5","strategy_id":"1","options_value":"4"}
]
}
Ну а тогда задача сводится к банальной:
Вы делаете запрос
SELECT * FROM `strategy`
и заполняете базовые поля
А потом для каждой строки из strategy
делаете запрос
SELECT * FROM strategyoptions WHERE strategy_id = :id
и заполняете массив
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть структура Color (MicrosoftXna
Реализовал перетаскивание формы за тело при помощи WinAPI: