PHP + SQL HELP

5 отговора 237 прегледа
#1

PHP + SQL HELP

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 "Голата истина лежи там някъде";
Отговор
в отговор на charly #2

Re: PHP + SQL HELP

Отговорът е:

mysql_query("SELECT title FROM table ORDER BY count DESC;")

След Order by Field_Name трябва (или можеш) да указваш реда на сортиране. По default е ASC (Ascending), т.е. увеличаващи се, а на теб ти трябват намаляващи, т.е. DESC (Descending).

ОК?

Отговор
в отговор на Cyber #3

Re: PHP + SQL HELP

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 "Голата истина лежи там някъде";
Отговор
в отговор на charly #4

Сигурен ли си

че е цифрово полето?
Малко ми прилича на сортиране на стрингове
иначе тоя пример се сортира безпроблемно

Една легенда се завръща [линк]
Отговор
в отговор на Бorдaнoв #5

Re: Uspyah

Blgodarya mnogo greshkata mi e bila tam che poleto ne mi bilo cifrovo :)

blgaodarya vi ....

echo "Голата истина лежи там някъде";
Отговор
в отговор на charly #6

Re: ei-taka

Като оставим настрана тоа, че не е добра идея да пазиш цифри в 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
Отговор