Я использую codeigniter, и я пытаюсь вызвать 3 разных таблицы и объединить их в один массив. Это то, что у меня есть:MySQL объединяет 3 таблицы и формат
$this->db->select('so_alcohol.id,
so_alcohol.name as name,
so_alcohol.category as category,
so_alcohol.permName as permName,
so_alcohol.picture as alcoholPicture,
group_concat(so_user.firstName) as firstName,
group_concat(so_user.lastName) as lastName,
group_concat(so_user.picture) as userPicture,
group_concat(so_rating.idUser) as idUser,
group_concat(so_rating.overall) as overall,
group_concat(so_rating.description) as description');
$this->db->from('alcohol');
$this->db->order_by("id", "desc");
$this->db->join('so_rating', 'so_rating.idAlcohol = so_alcohol.id', 'LEFT');
$this->db->join('so_user', 'so_user.id = so_rating.idUser', 'LEFT');
$query = $this->db->get();
Выход я хотел бы следующий:
Array
(
[0] => stdClass Object
(
[id] => 1
[name] => Product Name
[category] => Product category
[permName] => Product-Name
[alcoholPicture] => http://image.com/1.jpg
[idUser] => 1,2,3
[overall] => 100,80,50
[description] => Review 1,Awesome review 2, Horrible review 3
[firstName] => name 1, name 2, name 3
[lastName] => last 1, last 2, last 3
[userPicture] => http://userimage.com/1.jpg, http://userimage.com/2.jpg, http://userimage.com/3.jpg
)
[0] => stdClass Object
(
[id] => 1
[name] => Product Name
[category] => Product category
[permName] => Product-Name
[alcoholPicture] => http://image.com/1.jpg
[idUser] => 1,2,3
[overall] => 100,80,50
[description] => Review 1,Awesome review 2, Horrible review 3
[firstName] => name 1, name 2, name 3
[lastName] => last 1, last 2, last 3
[userPicture] => http://userimage.com/1.jpg, http://userimage.com/2.jpg, http://userimage.com/3.jpg
)
)
Мой вопрос, как я могу сделать то, что у меня есть работа, прямо сейчас есть две проблемы (что я нашли) Сначала он выводит только 1 результат, мне нужно его выводить 40, а второй я не могу so_user.id = so_rating.idUser
, потому что я уже group_concat(so_rating.idUser)
Любые идеи? Я даже не уверен, что это правильный способ сделать это, поскольку я все еще новичок php.
EDIT:
Алкоголь
id name category permName picture
1 Product #1 1 Product-1 http://someurl.com/1.jpg
2 Product #2 1 Product-2 http://someurl.com/2.jpg
3 Product #3 1 Product-2 http://someurl.com/3.jpg
4 Product #4 2 Product-2 http://someurl.com/4.jpg
Рейтинг
id idUser idProduct overall description
1 1 2 100 Great Product Review 1
2 2 2 75 Great Product Review 2
3 1 3 100 Great Product Review 3
4 2 3 98 Great Product Review 4
Пользователь
id firstName lastName userPicture
1 first 1 last 1 http://someurlUserPicture.com/1.jpg
2 first 2 last 2 http://someurlUserPicture.com/2.jpg
3 first 3 last 3 http://someurlUserPicture.com/3.jpg
4 first 4 last 4 http://someurlUserPicture.com/4.jpg
Я рассмотрел схемы таблиц. В соответствии с вашим запросом я не уверен, что будет делать группа по функциям .... Я по-прежнему очень зеленый с php/msql, я надеялся, что вы погрузитесь в создание сайта, чтобы узнать, что мне нужно узнать. Во второй части я всегда получаю сообщение об ошибке в Mysql, говоря, что я не могу сделать 'so_user.id = so_rating.idUser', потому что раньше я его« GROUP_CONCAT ». Не возражаете ли вы показать мне пример того, как вы сейчас справитесь с этим, когда я подниму схему таблиц? – Jacinto
Вы могли бы скопировать сообщение об ошибке для нас, пожалуйста? – Basti
Nevermind Я идиот, я не положил, в конце. нормально, вторая часть работает, но я все еще получаю только 1 алкоголь, 1 отзыв и 1 пользователь. Я хочу получить 40 спиртов, 5 отзывов и 5 пользователей – Jacinto