У меня есть две таблицы. skill
и userskill
.SELECT name Из объединенной таблицы, в которой объединен идентификатор строки таблицы в наборе столбцов родительской таблицы
умение строки
type:1
name:'Web Development'
id: 1
type:1
name:'Graphic Design'
id: 2
userskill грести
user_id: 1
skill_type: 1
skills: '1,2'
Следующий запрос возвращает только первую строку, а не оба ряда, как я ожидал. Мне было интересно, почему, и если этот тип соединения даже возможен/хорошая практика.
запрос
SELECT b.name,b.type
FROM userskill a
JOIN skill b ON a.skill_type=b.type
WHERE a.user_id="1" AND b.id IN(a.skills)
Вы можете быть удивлены, почему запрос не пытается сдерживать на skill_type
это происходит потому, что я хочу, чтобы вернуть список всех навыков пользователей, которые затем могут быть отсортированы по типу в приложении. это более удобно, чем выполнение многих запросов, на мой взгляд.
Не хранить списки в качестве разделенных запятых строк. SQL не поддерживает то, что вы пытаетесь сделать. Таблица 'UserSkills' должна иметь одну строку для каждого пользователя и навыка. –
fyi, он работает с поиском в комплекте. @GordonLinoff http://puu.sh/mPmJ3/1212ad07ea.png ли это хорошая практика или нет, это еще одна история. – r3wt
. , Очень плохая практика. –