Задавайте вопросы, мы ответим
Вы не зашли.
Дорогое сообщество! Подскажите реализацию вот такой схемы:
есть таблица юзеров USERS:(id, name)
id name
--------------
1 Nick
10 Alex
...
и таблица USER_GENRES(жанры пользователей):(id,user_id,genre_id)
в таблице жанров может содержаться от 1 до 15 жанров пользователя(пользователь на сайте выбирает любимые жанры в музыке)
т.е. например:
id user_id genre_id
------------------------------
1 10 22
2 10 25
3 10 40
...
т.е. уникально только id
необходимо сделать выборку одним запросом: юзера и все его жанры.
получить ответ в виде (name.users,user_genres.genre(0),user_genres.genre(1)...user_genres.genre(n))
Спасибо!
Отредактированно nertus (07.12.2008 17:40:19)
Неактивен
Неактивен
нет, так не пойдет, нужно чтобы в строке ответа имя юзера не повторялось. а результат вернулся в одну строку...
как я и писал
name.users user_genres.genre(0) user_genres.genre(1) ... user_genres.genre(n)
Неактивен
Буквально как пишете, сделать нельзя. Но можно получить все группы через запятую (или разделитель) с помощью GROUP_CONCAT.
Неактивен
а если через курсоры?
Неактивен
в случае с групировкой, теряются значения жанров...
Неактивен
Курсоры вряд ли имеют смысл в данном случае. Проще результат запроса, приведенного в ответе №2 обработать как требуется уже в языке программирования.
Неактивен
это нужно для системы поиска, удобно было бы получить ответь в одной строке...
Неактивен
и если не сложно, для первоначальных условий приведите запрос, который возвратит всех пользователей, у которых один из жанров = 20
Неактивен
Не пойму, все же, чем не нравится GROUP CONCAT.
Ответ на второй вопрос:
Неактивен
если не сложно, приведите пример с GROUP CONCAT
Неактивен
Неактивен