|
Тема
|
PHP + SQL HELP
|
|
Автор |
charly (непознат) |
Публикувано | 08.02.02 05:29 |
|
Zdravyete horica,
Tova koeto iskam da napravya e da podredya resultatite ot SQL tablica c nishodyash red.
ako imame 3 tablici i kolonkata 'count' e ravna na suotvetno:
1421
18
5876
resultata kotyto iskam da polucha e redovete WHERE 'count' da sa podredeni suotvetno:
5876
1421
18
Tova koeto pravya e:
mysql_query("SELECT title FROM table ORDER BY count;")
pls... help
echo "Голата истина лежи там някъде";
| |
Тема
|
Re: PHP + SQL HELP
[re: charly]
|
|
Автор |
Cyber () |
Публикувано | 08.02.02 09:26 |
|
Отговорът е:
mysql_query("SELECT title FROM table ORDER BY count DESC;")
След Order by Field_Name трябва (или можеш) да указваш реда на сортиране. По default е ASC (Ascending), т.е. увеличаващи се, а на теб ти трябват намаляващи, т.е. DESC (Descending).
ОК?
| |
Тема
|
Re: PHP + SQL HELP
[re: Cyber]
|
|
Автор |
charly (непознат) |
Публикувано | 08.02.02 20:26 |
|
Purvo ti blagodarya za utochnenieto no taka sum probval i mi podrejda rezultatite naprimer:
985
847
789
547
4850 // Eto tova e problema
307
2078 // I tova sushto
2054
110
i t.n.
Ima li drugi varianti koito da probvam ?
10x in advance
echo "Голата истина лежи там някъде";
| |
|
че е цифрово полето?
Малко ми прилича на сортиране на стрингове
иначе тоя пример се сортира безпроблемно
Една легенда се завръща
| |
|
Blgodarya mnogo greshkata mi e bila tam che poleto ne mi bilo cifrovo :)
blgaodarya vi ....
echo "Голата истина лежи там някъде";
| |
Тема
|
Re: ei-taka
[re: charly]
|
|
Автор |
salle (Един такъв) |
Публикувано | 11.02.02 11:40 |
|
Като оставим настрана тоа, че не е добра идея да пазиш цифри в CHAR колони ето ти един два съвета
1. Най-лесния начин да преобразуваш CHAR в Цифров тип е +0
в твоя случай:
SELECT char_col+0 AS num_alias FROM tbl ORDER BY num_alias DESC;
този номер важи за всички типове само при DATE, TIME, DATETIME работи малко по-различно
2. Обратният номер - понякога ти се налага да обработваш цифрова информация като стрингове. Тогава а и в други случаи е добре да имаш фиксирана дължина и запълване с 0 отпред:
12345
00534
00002
50204
00037
В MySQL можеш да дефинираш
num_col INT(5) ZEROFILL
и ше получиш горния ефект.
В случая декларацията INT(N) означава N цифри в резултата и няма нищо общо с вътрешното представяне. т.е. INT продължава да е 4 byte и приема всички възможни стойности, но ако числото е малко от N десетични цифри при SELECT се запълва с 0
често срещана грешка е да мислиш, че INT(2) означава 2-байта
ZEROFILL може да се добавя за всички цифрови типове:
TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT, FLOAT, DOUBLE, DECIMAL
Успех. И питай - ще ти отговорят
Linux is like a wigwam - No Windows, No Gates, Apache inside
| |
|
|
|
|