Изучаем sql


SELECT 'Small Fry' name, 0 low_limit, 4999.99 high_limit



Pdf көрінісі
бет186/261
Дата28.07.2022
өлшемі1,6 Mb.
#147825
1   ...   182   183   184   185   186   187   188   189   ...   261
Байланысты:
Изучаем SQL ( PDFDrive )

SELECT 'Small Fry' name, 0 low_limit, 4999.99 high_limit
> UNION ALL
> SELECT 'Average Joes' name, 5000 low_limit, 9999.99 high_limit
> UNION ALL
> SELECT 'Heavy Hitters' name, 10000 low_limit, 9999999.99 high_limit;
++++
| name | low_limit | high_limit |
++++
| Small Fry | 0 | 4999.99 |
| Average Joes | 5000 | 9999.99 |
| Heavy Hitters | 10000 | 9999999.99 |
++++
3 rows in set (0.00 sec)


Перекрестные соединения
207
Хотя эта таблица является именно тем, что требовалось для разделения
клиентов на три группы на основании их совокупного остатка на счете,
эта стратегия слияния однострочных таблиц с помощью оператора
union
all
не очень подходит, если требуется соорудить большую таблицу.
Например, требуется создать запрос, формирующий строку для каж
дого дня 2004 года, но в БД нет таблицы, содержащей строки для всех
дней. Используя стратегию из примера главы 9, можно было бы сде
лать чтото вроде этого:
SELECT '20040101' dt
UNION ALL
SELECT '20040102' dt
UNION ALL
SELECT '20040103' dt
UNION ALL
...
...
...
SELECT '20041229' dt
UNION ALL
SELECT '20041230' dt
UNION ALL
SELECT '20041231' dt
Создавать запрос, соединяющий результаты 366 запросов, немного уто
мительно, поэтому, наверное, нужна другая стратегия. Что если сгене
рировать таблицу с 366 строками (2004 год был високосным) и одним
столбцом, содержащим число от 0 до 366, и затем добавлять это число
дней к 1 января 2004? Вот одна из возможных методик формирования
подобной таблицы:
mysql> 
SELECT ones.num + tens.num + hundreds.num
> FROM
> (SELECT 0 num UNION ALL
> SELECT 1 num UNION ALL


Достарыңызбен бөлісу:
1   ...   182   183   184   185   186   187   188   189   ...   261




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет