Я использую mysql для своего проекта. У меня две таблицы: user
и img
. И это схема для них.
User
id: int (AI)
username: varchar(50)
password: varchar(50)
Img
id: int (AI)
user_id: int
path: varchar(100)
Я знаю, что mysql не поддерживает такой массив, как nosql, поэтому я должен использовать две таблицы для хранения нескольких изображений на одного пользователя.
Пропозиция: когда я получаю всех пользователей с их изображением, он дублирует данные, запрос выглядит так:
SELECT u.*, i.path FROM user u INNER JOIN img i ON u.id=i.user_id ORDER BY u.id DESC
Я знаю причину, но я не могу ее решить, данные должны быть такими
Пользователь || Img
5 || 897696987.jpg, Jghd8867D.jpg
8 || 8768788Kd.jpg
Но это шоу:
Пользователь || Img
5 || 897696987.jpg
5 || Jghd8867D.jpg
8 || 8768788Kd.jpg
Как я могу сделать это лучше? Спасибо!
Попробуй это
SELECT u.*, GROUP_CONCAT(i.path) as i.path FROM user u INNER JOIN img i ON u.id=i.user_id GROUP BY u.id ORDER BY u.id DESC
obj{id:5, username: "test", img: [{id: 1, path: sss.jpg,{id: 2, path: aaa.jpg}}] }