SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 17.06.2010 14:45:20

owlpic
Участник
Зарегистрирован: 19.05.2010
Сообщений: 7

Тип данных SET

Уважаемые спецы, подскажите пожалуйста как мне управиться с данным типом.
Пример:

Есть 2 таблицы.

Column    Type   
idDegree    int(11) Auto Increment    
DeName    varchar(45)
DeCodeName    varchar(45)   

и

Column    Type   
idPeople    int(11) Auto Increment    
FirstName    varchar(255)    
LastName    varchar(255)    
MidName    varchar(255)         
Degrees    set('1','2','3','4','5','6','7','8','9','10')

Необходимо выбрать все записи из первой таблицы, значение поля DeCodeName которых попадает в set второй таблицы.

Пытался это сделать таким вот запросом:
select DeName from Degree where DeCodeName in(select Degrees from People where idPeople = 1)

Но в результате получается ерунда.

Также подозреваю, что значениями set'а не логично цифры делать, изначально пытался сделать выборку по id первой таблицы, но результат был таким же...

Как быть?

Неактивен

 

#2 17.06.2010 15:36:30

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Тип данных SET

varchar с set должен нормально сравниваться. Можете привести пример данных?

Неактивен

 

#3 17.06.2010 15:56:33

owlpic
Участник
Зарегистрирован: 19.05.2010
Сообщений: 7

Re: Тип данных SET

idPeople        FirstName        LastName        MidName            idObject        Degrees
1            Карпик        Александр    Петрович            555            1,2,3
2            Скрипников    Виктор        Александрович    555            4,5,6
3            Уставич        Георгий        Афанасьевич        555            1,2
4            Жуков         Борис        Николаевич        555            2,4

idDegree        DeName                    DeCodeName
1            Доктор техничеких наук        1
2            Профессор                2
3            Зав.кафедрой                3
4            Кандидат технических наук    4
5            Доцент                    5
6            Зам. зав. кафедрой            6

Вот пример...

Форум все порубал sad Но вроде бы понятно.

Отредактированно owlpic (17.06.2010 15:57:18)

Неактивен

 

#4 17.06.2010 16:13:47

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Тип данных SET

Хм, что-то я протупил, глядя на Ваш запрос. Вам нужно использовать
FIND_IN_SET wink http://dev.mysql.com/doc/refman/5.1/en/ … ind-in-set

Т.е. что-то типа
select DeName from Degree, People
where FIND_IN_SET(DeCodeName, Degrees) AND idPeople = 1

Неактивен

 

#5 17.06.2010 16:31:59

owlpic
Участник
Зарегистрирован: 19.05.2010
Сообщений: 7

Re: Тип данных SET

Спасибо огромное, все работает как надо smile Это я протупил, читая ман smile Раз 10 прочитал и только вы меня надоумили, что же на самом деле делает функция FIND_IN_SET smile

В очередной раз спасибо вашему форуму smile

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson