Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 15:18 28.04.24 
Компютри и Интернет
   >> Бази данни
*Кратък преглед

Тема Питане за set field type  
Автор Borko (един от тълпата)
Публикувано14.12.08 18:55



Проблем със следната таблица и примерно 3 записа.



CREATE TABLE `test` (
`id` int(4) NOT NULL,
`foods` set('fish','pizza','chips') NOT NULL,
`name` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


+----+------------+---------+
| id | foods | name |
+----+------------+---------+
| 1 | fish,pizza | Bill |
| 2 | fish | Alison |
| 3 | chips | Charlie |
+----+------------+---------+



Как може да се получи резултат разбит на отделните храни, сортиран по foods,name но ако някое име го има в два вида храна, както в примера е Bill да го има като два реда в резултата. Или по нагледно като резултата по долу



+----+-------+---------+
| id | foods | name |
+----+-------+---------+
| 3 | chips | Charlie |
| 2 | fish | Alison |
| 1 | fish | Bill |
| 1 | pizza | Bill |
+----+-------+---------+





Тема Re: Питане за set field typeнови [re: Borko]  
Автор salle (един такъв)
Публикувано17.12.08 12:47



хм .. аз ти бях отговорил ама някъде ми се е затрил отговора.

Прочети за Нормализация при базите данни. Има много из интернет. Wikipedia е добро начало



След като ти трябват такива заявки не използвай SET а изнеси food в отделна таблица и или промени PRIMARY KEY в тази или добави трета таблица (name_id, food_id).

т.е. нещо в стил:

CREATE TABLE name (id INT PRIMARY KEY, name VARCHAR(50));
CREATE TABLE food (id INT PRIMARY KEY, food CHAR(NN));
CREATE TABLE name_food (name_id INT, food_id INT, PRIMARY KEY(name_id, food_id));



Тема Re: Питане за set field typeнови [re: salle]  
Автор Borko (един от тълпата)
Публикувано18.12.08 22:28



Мерси за отговора. Абе какво им стана на тия хора. Не виждат ли че сме в криза

. Досега ядяха по една храна сега искат да ядат по повече. Много са промените дето трябва да се направят ако се ползват повече таблици. Затова се чудех дали няма някой начин дето да не се сещам за него. Явно няма, затова мисля да им разреша само по една храна да ядат.



Тема Re: Питане за set field typeнови [re: Borko]  
Автор NDeu (динозавър)
Публикувано20.12.08 22:18



Ужас


Ще ги умориш от глад бе

Виж решението, което ти предлага salle. Класическо и разширямо е.
Изобщо - само плюсове.
Минусите, ако ги има, са пренебрежими.



Тема Re: Питане за set field typeнови [re: Borko]  
Автор Dakota (erotoman)
Публикувано06.01.09 14:36



За съжаление нямам опит с тази функционалност в MySQL, но наистина би било хубаво да си нормализираш таблицата, както предлага и salle.

За да намалиш промените след това, можеш да си направиш изглед (view) със същото име като първоначалната таблица, което да обединява резултатните таблици и с помощта на GROUP_CONCAT() приложението ти да "вижда" същата структура. Освен това MySQL доколкото си спомням поддържа updatable views, само дето имаше някакво ограничение - ако има повече от една таблица. Може би вече са го премахнали, не знам. Ако не - слагаш един before trigger върху изгледа - така ще постигнеш същата функционалност без да пипаш и един ред в клиентското приложение.

"Договор, подписан с Русия, струва по-малко от хартията, върху която е написан!" - Бисмарк

Редактирано от Dakota на 06.01.09 14:38.




*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.