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

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

Код: 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
Объединение нескольких SELECT с условием IF NOT RESULT
    #38886099
undron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нашел более и менее хорошее решение:

Код: 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
Объединение нескольких SELECT с условием IF NOT RESULT
    #38886101
undron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
неа, не катит (
...
Рейтинг: 0 / 0
Объединение нескольких SELECT с условием IF NOT RESULT
    #38886160
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Объединение нескольких SELECT с условием IF NOT RESULT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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