powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Условие WHERE в SELECT
8 сообщений из 8, страница 1 из 1
Условие WHERE в SELECT
    #32873429
Vitaly_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Подскажите пожалуйста, как правильно оформить запрос...
Есть база в MySQL, одна из таблиц которой ежедневно пополняется
информацией о продажах товаров. Каждый товар имеет уникальный код
Структура таблицы My_table :
(
KOD Char(7), код товара
NAME Char(70), наименование товара
CENA Numeric(8,4), цена
REAL Numeric(4), продано единиц товара
DATA Date, дата продажи
...
)
Код товара формируется из группы (2 первых символа), подгруппы (2 след.) и
кода товара в подгруппе (3 последних).

Требуется сделать суммарную выборку за период с Date1 до Date2,
например по нескольким разным группам, или подгруппам, или конкретным
товарам.
Пробовал так:
SELECT
KOD,
NAME,
REAL as SUM(REAL),
SUMMA as SUM(REAL*CENA),
...
FROM My_table
WHERE DATA between Date1 and Date2
and KOD IN("01", "02", "0308", "0402123")
GROUP BY KOD
ORDER BY KOD

Но функция IN не понимает, что товар с кодом "0201045", например,
принадлежит группе "02", т.е. удовлетворяет условию.
Перечислить в условии весь список 7-ми значных кодов требуемых товаров
не представляется возможным.

Как это можно сделать ?

P.S. в фоксе такой запрос из dbf таблицы с оператором IN работает.
...
Рейтинг: 0 / 0
Условие WHERE в SELECT
    #32873456
sinnerXP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть прекрасный оператор like
...
Рейтинг: 0 / 0
Условие WHERE в SELECT
    #32873736
_Apache_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще есть left, right (побыстрее чем like)
...
Рейтинг: 0 / 0
Условие WHERE в SELECT
    #32874250
Vitaly_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В случае c LIKE придется перечислять:

WHERE (Kod LIKE "01%" OR Kod LIKE "02%" OR Kod LIKE "0308%" OR Kod LIKE "0402123")

В случае LEFT видимо аналогично.
Можно ли уместить в одном операторе ?
...
Рейтинг: 0 / 0
Условие WHERE в SELECT
    #32876008
max(id)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посмотри в сторону регулярных выражений, например используй функции REGEXP или RLIKE.
...
Рейтинг: 0 / 0
Условие WHERE в SELECT
    #32878072
Vitaly_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
max(id)Посмотри в сторону регулярных выражений, например используй функции REGEXP или RLIKE.
Запрос будет выглядеть так:

SELECT
KOD,
NAME,
REAL as SUM(REAL),
SUMMA as SUM(REAL*CENA),
...
FROM My_table
WHERE DATA between Date1 and Date2
and KOD REGEXP "^01|^02|^0308|^0402123"
GROUP BY KOD
ORDER BY KOD

Спасибо !
...
Рейтинг: 0 / 0
Условие WHERE в SELECT
    #32878218
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как у RLIKE со скоростью, по сравнению с LIKE?...
...
Рейтинг: 0 / 0
Условие WHERE в SELECT
    #32878223
sky2k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DocAlА как у RLIKE со скоростью, по сравнению с LIKE?...

[sky@sky ~]$ mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5052 to server version: 4.1.8-standard-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
mysql> select * from chk_files where file_name like '41211%' limit 10;
Empty set (0.00 sec)

mysql> select * from chk_files where file_name like '%41211%' limit 10;
Empty set (0.92 sec)

mysql> select * from chk_files where file_name regexp '41211.*' limit 10;
Empty set (1.40 sec)

mysql> select count(*) from chk_files;
+----------+
| count(*) |
+----------+
|   533485 |
+----------+
1 row in set (0.00 sec)

mysql> 

если правильно использовать like то гораздо быстрее
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Условие WHERE в SELECT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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