MySQL выбирает данные и разделяет результат по определенным критериям

#php #mysql

#php #mysql

Вопрос:

У меня есть моя таблица со ставками.

  ---- ----------- ---------- --------- -------------------------- ------ 
| id | auctionID | bidderID | amount  | bidTime                  | pr   |
 ---- ----------- ---------- --------- -------------------------- ------ 
|  5 |         3 |        3 | 1000000 | 2016-10-18 21:59:36.0000 |   25 |
|  6 |         4 |        1 |  100000 | 2016-10-20 23:29:12.0000 |   30 |
|  7 |         4 |        2 |  100000 | 2016-10-20 23:29:25.3352 |   25 |
|  8 |         4 |        3 |  500000 | 2016-10-20 23:30:09.0000 |   50 |
|  9 |         3 |        2 |  250000 | 2016-10-20 23:54:26.0000 |   25 |
| 10 |         3 |        1 | 5000000 | 2016-10-21 03:56:00.0000 |   60 |
 ---- ----------- ---------- --------- -------------------------- ------ 
  

Мне нужен вывод для одного AuctionID (на этот раз 3), первый приоритет — pr, второй — время подачи заявок.

 SELECT * FROM table WHERE auctionID = 3 ORDER BY pr DESC, bidTime ASC;
 ---- ----------- ---------- --------- -------------------------- ------ 
| id | auctionID | bidderID | amount  | bidTime                  | pr   |
 ---- ----------- ---------- --------- -------------------------- ------ 
| 10 |         3 |        1 | 5000000 | 2016-10-21 03:56:00.0000 |   60 |
|  5 |         3 |        3 | 1000000 | 2016-10-18 21:59:36.0000 |   25 |
|  9 |         3 |        2 |  250000 | 2016-10-20 23:54:26.0000 |   25 |
 ---- ----------- ---------- --------- -------------------------- ------ 
  

Пока все хорошо.

Теперь мне нужно разделить этот выбор на выигрышные и невыигрышные ставки в зависимости от суммы. Допустим, максимальная общая сумма для аукциона 3 установлена равной 5500000. В этом случае ставка с id = 5 должна быть разделена пополам.

Пример вывода, который я ищу (выигрышные ставки против проигрышных ставок с разделением на требуемую сумму, в данном случае 5500000):

 SELECT winningBids;
 ---- ----------- ---------- --------- -------------------------- ------ 
| id | auctionID | bidderID | amount  | bidTime                  | pr   |
 ---- ----------- ---------- --------- -------------------------- ------ 
| 10 |         3 |        1 | 5000000 | 2016-10-21 03:56:00.0000 |   60 |
|  5 |         3 |        3 |  500000 | 2016-10-18 21:59:36.0000 |   25 |
 ---- ----------- ---------- --------- -------------------------- ------ 

SELECT loosingBids;
 ---- ----------- ---------- --------- -------------------------- ------ 
| id | auctionID | bidderID | amount  | bidTime                  | pr   |
 ---- ----------- ---------- --------- -------------------------- ------ 
|  5 |         3 |        3 |  500000 | 2016-10-18 21:59:36.0000 |   25 |
|  9 |         3 |        2 |  250000 | 2016-10-20 23:54:26.0000 |   25 |
 ---- ----------- ---------- --------- -------------------------- ------ 
  

Я знаю, как это сделать с PHP / MySQL, но я ищу, как это сделать только в MySQL.

Спасибо

Комментарии:

1. mysql не может создавать строки из ничего. это то, что вам нужно будет сделать в коде на стороне клиента.

2. Вы должны отделить свое хранилище данных от своей бизнес-логики, это не должно быть сделано в MySQL.