Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Объединение нескольких SELECT с условием IF NOT RESULT / 4 сообщений из 4, страница 1 из 1
22.02.2015, 18:15:14
    #38886056
undron
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение нескольких SELECT с условием IF NOT RESULT
Всех приветствую!

Есть таблица вида:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
+----+---------------------+--------------+----------+-------+--------+----------+
| id | date                | number       | operator | money | minute | smscount |
+----+---------------------+--------------+----------+-------+--------+----------+
|  1 | 2015-02-14 17:59:20 | 000000000001 | OPER01   | 13864 | ERR    | ERR      |
|  2 | 2015-02-14 17:59:20 | 000000000002 | OPER01   | 58642 | 1336   | 1336     |
|  3 | 2015-02-14 17:59:20 | 000000000003 | OPER01   | 68695 | 61     | 61       |
|  4 | 2015-02-14 17:59:20 | 000000000004 | OPER01   | 21225 | 1149   | 1149     |
|  5 | 2015-02-14 17:59:20 | 000000000005 | OPER01   | ERR   | ERR    | ERR      |
|  6 | 2015-02-14 17:59:20 | 000000000006 | OPER02   | 1190  | ERR    | ERR      |
|  7 | 2015-02-14 17:59:20 | 000000000007 | OPER02   | 212   | 0      | ERR      |
|  8 | 2015-02-14 17:59:20 | 000000000008 | OPER02   | 1220  | 973    | 1902     |
|  9 | 2015-02-14 17:59:20 | 000000000009 | OPER02   | 7320  | 765    | 1000     |
| 10 | 2015-02-14 17:59:20 | 000000000010 | OPER02   | 2596  | 0      | ERR      |
| 11 | 2015-02-15 12:25:14 | 000000000001 | OPER01   | ERR   | ERR    | ERR      |
| 12 | 2015-02-15 12:25:14 | 000000000002 | OPER01   | 56160 | 1336   | ERR      |
| 13 | 2015-02-15 12:25:14 | 000000000003 | OPER01   | 68695 | 55     | ERR      |
| 14 | 2015-02-15 12:25:14 | 000000000004 | OPER01   | 18743 | 1149   | ERR      |
| 15 | 2015-02-15 12:25:14 | 000000000005 | OPER01   | ERR   | ERR    | ERR      |
| 16 | 2015-02-15 12:25:14 | 000000000007 | OPER02   | ERR   | ERR    | ERR      |
| 17 | 2015-02-15 12:25:14 | 000000000008 | OPER02   | ERR   | ERR    | ERR      |
| 18 | 2015-02-15 12:25:14 | 000000000009 | OPER02   | ERR   | ERR    | ERR      |
| 19 | 2015-02-15 12:25:14 | 000000000010 | OPER02   | ERR   | ERR    | ERR      |
| 20 | 2015-02-17 10:50:57 | 000000000001 | OPER01   | ERR   | ERR    | ERR      |
+----+---------------------+--------------+----------+-------+--------+----------+


Необходимо получить результат вида:
Код: sql
1.
2.
3.
4.
5.
+--------------+-------+----------+--------+----------+----------+----------+
| number       | money | mdate    | minute | mtdate   | smscount | sdate    |
+--------------+-------+----------+--------+----------+----------+----------+
| 000000000004 | 18743 | 15.02.15 | 1149   | 15.02.15 | 1149     | 14.02.15 |
+--------------+-------+----------+--------+----------+----------+----------+


т.е. необходимо вывести для определенного номера (number) три результата запроса в одном:
1. последнее значение money НЕ равное ERR + его дата, а если значений не найдено, то подставить в поле money и mdate значение ERR
2. последнее значение minute НЕ равное ERR + его дата, а если значений не найдено, то подставить в поле minute и mtdate значение ERR
3. последнее значение smscount НЕ равное ERR + его дата, а если значений не найдено, то подставить в поле smscount и sdate значение ERR

Отчасти получилось кое как объединить, но если один из результатов NOT RESULT, весь объединенный запрос тоже выводит NOT RESULT.

Всем заранее спасибо за помощь!
...
Рейтинг: 0 / 0
22.02.2015, 20:54:21
    #38886099
undron
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение нескольких SELECT с условием IF NOT RESULT
нашел более и менее хорошее решение:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
SELECT T1.number, T1.money, T1.mdate, T2.minute, T2.mtdate, T3.smscount, T3.sdate
FROM
(SELECT number, DATE_FORMAT(date, '%d.%m.%y') AS mdate, 
IFNULL((SELECT money FROM simdata WHERE number='000000000007' AND money!='ERR' LIMIT 1) ,'ERR') AS money
FROM simdata
WHERE number='000000000007'
ORDER BY date DESC 
LIMIT 1
) T1,
(SELECT number, DATE_FORMAT(date, '%d.%m.%y') AS mtdate, 
IFNULL((SELECT minute FROM simdata WHERE number='000000000007' AND minute!='ERR' LIMIT 1) ,'ERR') AS minute
FROM simdata
WHERE number='000000000007'
ORDER BY date DESC 
LIMIT 1
) T2,
(SELECT number, DATE_FORMAT(date, '%d.%m.%y') AS sdate, 
IFNULL((SELECT smscount FROM simdata WHERE number='000000000007' AND smscount!='ERR' LIMIT 1) ,'ERR') AS smscount
FROM simdata
WHERE number='000000000007'
ORDER BY date DESC 
LIMIT 1
) T3
;
...
Рейтинг: 0 / 0
22.02.2015, 21:01:45
    #38886101
undron
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение нескольких SELECT с условием IF NOT RESULT
неа, не катит (
...
Рейтинг: 0 / 0
22.02.2015, 23:52:24
    #38886160
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение нескольких SELECT с условием IF NOT RESULT
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Объединение нескольких SELECT с условием IF NOT RESULT / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]