У меня есть запрос MySQL, который выбирает имена пользователей и их знания (может быть больше одного).
Он возвращает что-то вроде этого ...
array(5) {
[0]=>
array(5) {
["user_id"]=>
string(2) "30"
["name"]=>
string(6) "foo1"
["knowledge"]=>
string(15) "Basic Materials"
}
[1]=>
array(5) {
["user_id"]=>
string(2) "33"
["name"]=>
string(6) "foo2"
["knowledge"]=>
string(15) "Basic Materials"
}
[2]=>
array(5) {
["user_id"]=>
string(2) "34"
["name"]=>
string(10) "foo3"
["knowledge"]=>
string(9) "Eating"
}
[3]=>
array(5) {
["user_id"]=>
string(2) "34"
["name"]=>
string(10) "foo3"
["knowledge"]=>
string(9) "Financial"
}
[4]=>
array(5) {
["user_id"]=>
string(2) "34"
["name"]=>
string(10) "foo3"
["knowledge"]=>
string(8) "Services"
}
}
Как видите,в этом примере он возвращает пять записей.Тем не менее, три из них имеют повторяющиеся идентификаторы (и имена).Я ищу способ вернуть только три записи, подобные этой ...
Возможно ли сделать запрос?
array(5) {
[0]=>
array(5) {
["user_id"]=>
string(2) "30"
["name"]=>
string(6) "foo1"
["knowledges"]=>
array(1) {
[0] => string(15) "Basic Materials"
}
}
[1]=>
array(5) {
["user_id"]=>
string(2) "33"
["name"]=>
string(6) "foo2"
["knowledges"]=>
array(1) {
[0] => string(15) "Basic Materials"
}
}
[2]=>
array(5) {
["user_id"]=>
string(2) "34"
["name"]=>
string(10) "foo3"
["knowledges"]=>
array(1) {
[0] => string(15) "Eating"
[1] => string(15) "Financial"
[2] => string(15) "Services"
}
}
}
Другой вариант, который я вижу, - это обработка результатов нана стороне сервера.
Вот как выглядит запрос:
SELECT `profiles`.`user_id`, `users`.`name`, `users`.`surname`, `users`.`country`, `profile_knowledges`.`knowledge`
FROM `profiles`
JOIN `users`
ON (`users`.`id` = `profiles`.`user_id`)
JOIN `profile_knowledges`
ON (`profile_knowledges`.`profile_id` = `profiles`.`id`)