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

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

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

Страници по тази тема: 1 | 2 | >> (покажи всички)
Тема Класациянови  
АвторPitasht (Нерегистриран)
Публикувано13.04.06 11:41



Здравейте
имам следния въпрос - възможно ли е да се направи ъпдейт на класация само с една заявка(MySql 4.x). Пояснявам:
имам таблица: Sites с полета
Id - auto increment
SiteUrl - varchar
SiteIn - int (общ брой гласове за даден сайт)
SiteRank - int (място в класацията)

Има ли начин при промяна на SiteIn, с един UPDATE да се обнови SiteRank на всички записи, подредени спрямо SiteIn във низходящ ред?



Тема Re: Класациянови [re: Pitasht]  
Автор wqw (АзСъмЖив)
Публикувано13.04.06 13:17



Зависи дали MySQL-а е 4.0.x или 4.1.x

cheers,
</wqw>



Тема Re: Класациянови [re: wqw]  
АвторPitasht (Нерегистриран)
Публикувано13.04.06 16:02



Няма значение, важното да се каже някакво решение!



Тема Re: Класациянови [re: Pitasht]  
Автор wqw (АзСъмЖив)
Публикувано13.04.06 16:21



Виж дали можеш да подкараш нещо подобно:

UPDATE      Sites

SET Rank = (SELECT COUNT(*)
FROM Sites s
WHERE s.SiteIn >= Sites.SiteIn)

cheers,
</wqw>



Тема Re: По-добре отговори ...нови [re: Pitasht]  
Автор salle (един такъв)
Публикувано13.04.06 16:25



.. като те питат ако искаш да ти помогнат.

Има значение и то доста голямо



Тема Re: Класациянови [re: wqw]  
АвторPitash (Нерегистриран)
Публикувано13.04.06 16:46



Благодаря!
Точно това ми трябваше :)



Тема Re: По-добре отговори ...нови [re: salle]  
АвторPitash (Нерегистриран)
Публикувано13.04.06 16:59



Да, абсолютно си прав, 4.1.x e MySQL-a. На MSSQL работи, под MySQL не :/
Та salle, кажи си тежката дума.



Тема Re: Кое? [re: Pitash]  
Автор salle (един такъв)
Публикувано13.04.06 20:09



Кое е това дето "не работи"?

Това което wqw ти предложи и за което вече му благодари ли?



Тема Re: Кое?нови [re: salle]  
АвторPitasht (Нерегистриран)
Публикувано13.04.06 22:24



Това за което благодарих на wqw "работи" с MSSQL(има проблем само ако има SiteIn с еднакви стойност), как аджеба да "работи" и под MySQL 4.1.x ?



Тема Re: Кое?нови [re: Pitasht]  
Автор salle (един такъв)
Публикувано14.04.06 12:43



А .. вчера ми се беше събрало много та съм проспал че опитваш UPDATE x .. (SELECT .. FROM x)

а това засега не се поддържа нито в 4.1 нито в 5.0


Ето ти един вариант който е "хакерски" и освен това изисква да инициализираш променливата преди заявката така, че пак не е една заявка а две:


mysql> select * from Sites;
+--------+------+
| SiteIn | Rank |
+--------+------+
| 5 | 2 |
| 3 | 3 |
| 10 | 1 |
+--------+------+
3 rows in set (0.00 sec)


mysql> SET @r = 0; UPDATE Sites SET Rank= (@r:=@r+1) ORDER BY SiteIn;
Query OK, 0 rows affected (0.00 sec)

Query OK, 2 rows affected (0.00 sec)
Rows matched: 3 Changed: 2 Warnings: 0

mysql> select * from Sites ORDER BY Rank;
+--------+------+
| SiteIn | Rank |
+--------+------+
| 3 | 1 |
| 5 | 2 |
| 10 | 3 |
+--------+------+
3 rows in set (0.00 sec)


Най добре е да го реализираш с TRIGGER защото тогава промяната ще става автоматично при промяна на SiteIn ама за целта ти трябва 5.0




Страници по тази тема: 1 | 2 | >> (покажи всички)
Всички темиСледваща тема*Кратък преглед
Клуб :  


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

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