powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите пожалуйста с простым, на первый взгляд, запросом
8 сообщений из 8, страница 1 из 1
Помогите пожалуйста с простым, на первый взгляд, запросом
    #38029487
NeoEgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Есть таблица продаж товаров: id продажи, id товара, name товара.

CREATE CURSOR sale(sale_id n(5), tovar_id n(5), tovar_n c(10))
INSERT INTO sale(sale_id, tovar_id, tovar_n) VALUES (1, 100, 'Картошка')
INSERT INTO sale(sale_id, tovar_id, tovar_n) VALUES (2, 100, 'Картошка')
INSERT INTO sale(sale_id, tovar_id, tovar_n) VALUES (2, 200, 'Морковка')
INSERT INTO sale(sale_id, tovar_id, tovar_n) VALUES (3, 100, 'Картошка')
INSERT INTO sale(sale_id, tovar_id, tovar_n) VALUES (3, 200, 'Морковка')
INSERT INTO sale(sale_id, tovar_id, tovar_n) VALUES (4, 100, 'Картошка')
INSERT INTO sale(sale_id, tovar_id, tovar_n) VALUES (4, 300, 'Капуста')
INSERT INTO sale(sale_id, tovar_id, tovar_n) VALUES (5, 200, 'Морковка')
INSERT INTO sale(sale_id, tovar_id, tovar_n) VALUES (5, 300, 'Капуста')
INSERT INTO sale(sale_id, tovar_id, tovar_n) VALUES (6, 200, 'Морковка')
INSERT INTO sale(sale_id, tovar_id, tovar_n) VALUES (6, 300, 'Капуста')

Пожалуйста подскажите - как с помощью SQL выбрать из неё
количество продаж уникальных групп товаров,
если заранее неизвестно что с чем в связке продавалось?

К примеру, вот из этих данных
продажа №1: картошка
продажа №2: картошка+морковка
продажа №3: картошка+морковка
продажа №4: картошка+капуста
продажа №5: морковка+капуста
продажа №6: морковка+капуста

должен получиться результат
картошка кол-во продаж 1
картошка+морковка кол-во продаж 2
картошка+капуста кол-во продаж 1
морковка+капуста кол-во продаж 2

Я пишу на FoxPro, поэтому поздапросы в Group By использовать невозможно.
Хотя, мне не понять - возможно ли на SQL осуществить такое,
или выход - писать тормозную программу нахождения состава уникальных групп?

HELP...
...
Рейтинг: 0 / 0
Помогите пожалуйста с простым, на первый взгляд, запросом
    #38029495
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какая версия ФоксПро?
Наименования товара действительно надо брать из продаж - или уже есть отдельная таблица/курсор?
Выход надо получить однима запросом, или можно выполнить несколько?
...
Рейтинг: 0 / 0
Помогите пожалуйста с простым, на первый взгляд, запросом
    #38029498
NeoEgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,

Foxpro9, enginebehavior 70
Есть отдельная таблица с наименованиями товаров.
Можно в несколько запросов
...
Рейтинг: 0 / 0
Помогите пожалуйста с простым, на первый взгляд, запросом
    #38029543
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот примерное направление:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE CURSOR results(sale_id N(5), tovars C(200))

SELECT * FROM sale ORDER BY sale_id, tovar_id INTO CURSOR sales
SCAN
	IF sales.sale_id<>results.sale_id
		INSERT INTO results VALUES (sales.sale_id, sales.tovar_n)
	ELSE
		REPLACE results.tovars WITH results.tovars-','-sales.tovar_n
	ENDIF
**	IF sales.sale_id<>results.sale_id
**		INSERT INTO results VALUES (sales.sale_id, LTRIM(STR(sales.tovar_id)))
**	ELSE
**		REPLACE results.tovars WITH TRIM(results.tovars)+','+LTRIM(STR(sales.tovar_id))
**	ENDIF
ENDSCAN

SELECT tovars, COUNT(sale_id) FROM results GROUP BY tovars INTO CURSOR result
...
Рейтинг: 0 / 0
Помогите пожалуйста с простым, на первый взгляд, запросом
    #38029634
NeoEgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,

Спасибо большое!
Позитивное направление!

Подскажите - а минус в конкатенации строк - это аналог TRIM?
...
Рейтинг: 0 / 0
Помогите пожалуйста с простым, на первый взгляд, запросом
    #38029670
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NeoEgorAndreTM,Подскажите - а минус в конкатенации строк - это аналог TRIM?
Ну замени на '+', если не нравится :)
...
Рейтинг: 0 / 0
Помогите пожалуйста с простым, на первый взгляд, запросом
    #38029682
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если без шуток, то "-" = TRIM + "+"
...
Рейтинг: 0 / 0
Помогите пожалуйста с простым, на первый взгляд, запросом
    #38029804
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NeoEgorПодскажите - а минус в конкатенации строк - это аналог TRIM?
Нет.

При использовании минуса концевые пробелы каждого слагаемого переносятся в конец результата конкатенации. Однако ведущие пробелы остаются на месте.

Код: sql
1.
2.
lcTest = " 1 " - " 2 "
?"[" + m.lcTest + "]"



С некоторой натяжкой можно рассматривать минус, как отсечение концевых пробелов в каждом слагаемом. То, что делает функция RTRIM().
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите пожалуйста с простым, на первый взгляд, запросом
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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