![]() |
Показаны 2 сообщений на этой странице |
Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- MySQL (http://netadmin.ws/forum/forumdisplay.php?forumid=40)
-- Опять про оптимизацию запросов (http://netadmin.ws/forum/showthread.php?threadid=11375)
Опять про оптимизацию запросов
Имеется таблица:
cols | types
-----------------
id | PRIMARY
uniqid | VARCHAR(7) UNIQUE
col_1 | CHAR(2)
col_2 | TINYIN(2)
col_3 | SMALLINT(3)
name | VARCHAR(30)
id | uniqid | col_1 | col_2 | col_3 | name
-------------------------------------------------
1 | aa | aa | NULL | NULL | name 1
2 | aa04 | aa | 4 | NULL | name 2
3 | aa04058 | aa | 4 | 58 | name 3
SELECT a.*, b.name AS col_2_name, c.name AS col_1_name
FROM table AS a
LEFT JOIN table AS b ON (b.uniqid = CONCAT(a.col_1, LPAD(a.col_2, 2, 0))
LEFT JOIN table AS c ON (c.uniqid = a.col_1
WHERE a.id=3
__________________
Всегда есть решение.
А если заменить
b.uniqid = CONCAT(a.col_1, LPAD(a.col_2, 2, 0)
b.uniqid = left(a.uniqid, 4)
SELECT a.*,
(select name FROM table where uniqid = left(a.uniqid, 4)) AS col_2_name,
(select name FROM table where uniqid = a.col_1) AS col_1_name
FROM table as a
WHERE a.id=3
__________________
Тест - проверка верности!
| Формат времени GMT. Текущее время 21:58. | Показаны 2 сообщений на этой странице |
Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.