|
|
|
| Добрый день всем!
Помогите пожалуйста решить проблему.
Имеем две таблицы:
товар количество код описание
zzz132480945 65 zzz авто
zzzz34623546 54 zzzz продукты
zzzzzz456734 45 zzzzz канцелярия
zzzzz3598346 87 zzzzzz игрушки
где z - текстовый символ 0-9
Задача - выбрать для каждого товара соответствующую ему группу по наиболее длинному совпадению КОДА с начала (!) строки
Заранее всем СПС БИГ ! | |
|
| |
|
|
|
| А можно ваши таблички, хотя бы кусочки и бкез ZZZZZZZZZZZZZZZZ | |
|
| |
|
|
|
| товар количество код описание
998132480945 65 998 авто
998934623546 54 9989 продукты
998998456734 45 99866 канцелярия
998663598346 87 998998 игрушки | |
|
| |
|
|
|
| SELECT DISTINCT Таблица1.Товар, Таблица1.Количество,
(SELECT Таблица2.Описание FROM Таблица2 WHERE Таблица2.Код LIKE[СимволыДляСовпадения]) AS Примечание
FROM Таблица1
WHERE Таблица1.Товар Like [СимволыДляСовпадения] & "*";
Но в вашем случае при выборе кода 998 выдаст все записи и пометит их как авто.
ЗЫ (Это если я правильно понял условие задачи). | |
|
| |
|
|
|
| извините, а где же таблички? | |
|
| |
|
|
|
| Сорри, теперь вижу, что неправильно порнял условие.
Для решения в вашем случае нужно изменить структуру таблиц.
Введите в таблицу код-описание еще один столбец - ID кода, а в таблице товаров проставьте напротив каждого товара его код. И вытягивайте наименование группы по ее коду.
Иначе, только запросами это сделать, по моему, нельзя. | |
|
| |
|
|
|
| мне кажется, это будет многопроходная задача.
первый проход - определить максимальный по длине индекс | |
|
| |
|
|
|
| Я ничего не понял.
В вашем примере 4 разных товара. Какую группу нужно выбрать для каждого товара?
Покажите на примере, что и из чего надо быбрать. | |
|
| |
|
|
|
| товар количество код группа_товаров
998132480945 65 998 авто
998934623546 54 9989 продукты
998998456734 45 99866 канцелярия
998663598346 87 998998 игрушки
998900000000 18
Результат запроса должен быть:
товар группа_товаров код
998663598346 канцелярия 99866
998998456734 игрушки 998998
998132480945 авто 998
998900000000 продукты 9989
т.е. код товара дожен выбираться по самому длинному совпадению с начала товара
напр. 998998456734 должен быть выбран код 998998, а НЕ 998, 9989 т.к. он наболее соответствующий (длинный)
Если что - ICQ 303 610 253 | |
|
| |
|
|
|
| извините, а где же кусочек таблички? | |
|
| |
|
14 Кб. |
|
| Вот | |
|
| |
|
|
|
| Это нужно сделать в Экселе? | |
|
| |
|
|
25 Кб. |
|
| См Таблицу1 до запуска запроса и после | |
|
| |
|
|
|
| похоже что СУПЕР !!!
ща попробую разобрать
Рюмка чая с меня :-) | |
|
| |
|
|
|
| Слушай, если есть пара минут можешь в аське разжевать откуда и что?
303610253 | |
|
| |
|
|
|
|
| у меня нет аське на компе ( сисадмин закрыл) да и вааще никогда не было | |
|
| |
|
|
|
| Так а что там непонятно. Открываешь запрос в режиме SQL - там все расписано. Для выбора используется ф-ция InStr ее синтаксис неплохо расписан в хэлпе.(F1) | |
|
| |