|
Страници по тази тема: 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 ?
| |
|
А .. вчера ми се беше събрало много та съм проспал че опитваш 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 | >> (покажи всички)
|
|
|