Jump to content
  • 0

Сортировка не работает


anvyd
 Share

Question

У меня есть табличка
h_1440611262_1821873_94c5715acb.png

 

задание было "Получите только целые части (без дробной части) сумм(amt)"
Я использовал функцию SUBSTRING_INDEX, запрос выглядит так

SELECT SUBSTRING_INDEX(`amt`, '.', 1) AS 'amt' FROM `orders`;

то есть возьми поле `amt` найди там первое вхождение подстроки '.' и отсей все, что идет за ним. результат меня устривает, задачу  я выполнил.

h_1440611479_9434904_8e1844082b.png

Но, я решил пойти дальше, и захотел сортировать результат по полю amt
 

SELECT SUBSTRING_INDEX(`amt`, '.', 1) AS 'amt' FROM `orders` ORDER BY amt;SELECT SUBSTRING_INDEX(`amt`, '.', 1) AS 'amt' FROM `orders` ORDER BY `amt`;SELECT SUBSTRING_INDEX(`amt`, '.', 1) AS 'amt' FROM `orders` ORDER BY 'amt';

ни один из результатов не отсорировал табличку по этому полю, что я делаю не так?

Edited by anvyd
Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0

1) на мой взгляд все операции (будь то арифметические, или еще какие) лучше делать в php, а не sql, просто так вы снизите нагрузку на запрос, а значит время выполнения должно уменьшиться.

2) сортировать то как будете не указали ASC или DESC?

p.s. а задание было отсортировать именно в консоли?

Link to comment
Share on other sites

  • 0

1) на мой взгляд все операции (будь то арифметические, или еще какие) лучше делать в php, а не sql, просто так вы снизите нагрузку на запрос, а значит время выполнения должно уменьшиться.

2) сортировать то как будете не указали ASC или DESC?

p.s. а задание было отсортировать именно в консоли?

1) Это процесс обучения, но всё равно благодарю за совет, такого рода задачи на практике буду делать непосредственно посредством php.

2) разницы не имеет, я пробовал и ASC и DESC, по умолчанию делаю, то есть от меньшего к большему

В задании не было ни слова о сортировке, я просто хотел сам отсортировать результаты выборки, но так и не смог

Ааа, ну так получается, что amt - это строка. Сделайте как-то так:

SELECT SUBSTRING_INDEX(`amt`, '.', 1) AS 'amt', amt AS 'amt2' FROM `orders` ORDER BY amt2;
Так работает, но на выходе я имею два поля, невозможно сделать это так, чтобы на выходе было одно поле?

И я так и не понял, что значит 'amt' - это строка, это же вроде как псевдоним, я не могу разве к нему обращаться как к отдельному полю?

Если не сложно в двух словах, если я применил конструкцию 'AS', то я уже не могу обратиться к выборке под этим псевдонимом и делать с ней какие либо манипуляции?

Edited by anvyd
Link to comment
Share on other sites

  • 0

А так?

SELECT CONVERT(SUBSTRING_INDEX(`amt`, '.', 1), UNSIGNED) AS 'amt' FROM `orders` ORDER BY amt;

1) на мой взгляд все операции (будь то арифметические, или еще какие) лучше делать в php, а не sql, просто так вы снизите нагрузку на запрос, а значит время выполнения должно уменьшиться.
 

Почему? База данных может даже лучше всё это оптимизирует, чем PHP, почему вы считаете, что на PHP быстрее?


2) сортировать то как будете не указали ASC или DESC?
 

По умолчанию - ASC.


p.s. а задание было отсортировать именно в консоли?
 

А какая разница? Запрос и результат-то везде получится одинаковый!

Link to comment
Share on other sites

  • 0
Почему? База данных может даже лучше всё это оптимизирует, чем PHP, почему вы считаете, что на PHP быстрее?

с большими базами никогда не работал, но предполагаю т.к. mysql выполняет операции построчно, и если строк будет много, то очевидно времени займет много.

 

А какая разница? Запрос и результат-то везде получится одинаковый!

да я это спросил к тому что можно и в php отсечь дробную часть.

P.S. Антон, вроде договорились на ты? )

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy