Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как правильно составить запрос / 7 сообщений из 7, страница 1 из 1
12.09.2006, 17:32
    #33981838
viko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно составить запрос
Помогите пожалуйста!
Я только начинаю постигать SQL-запросы.
Есть табличка в которой перечислены товары , ну например:
2 гвозди 1
2 гвозди 2
2 шурупы 2 , где 2 - код магазина, гвозди,шурупы - наименование, 1,2 - статус товара (основной-дополнительный)
Надо выбрать товары ,но чтобы не повторялись наименования , т е надо получить:
2 гвозди 1
2 шурупы 2 , а 2 гвозди 2 чтоб не было тк у этого магазина уже есть такое наименование

Спасибо заранее
...
Рейтинг: 0 / 0
12.09.2006, 18:57
    #33982181
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно составить запрос
В таком запросе не имеет смысл выводить статус товара, т.к. ты должен получить ЛЮБОЙ статус товара. Если ты для себя это уяснил, то запрос становится тривиальным, с использованием предиката DISTINCT (исключить повторы):
Код: plaintext
1.
2.
3.
SELECT DISTINCT  Код_магазина, Наименование_товара
FROM Товары
ORDER BY Код_магазина, Наименование_товара
Если тебе обязателльно получит и статус товара (а какой именно?), то запрос будет более сложным, с использованием предиката GROUP BY:
Код: plaintext
1.
2.
3.
SELECT Код_магазина, Наименование_товара, MAX(статус_товара) AS статус_товара
FROM Товары
GROUP BY Код_магазина, Наименование_товара
ORDER BY Код_магазина, Наименование_товара
Запрос для каждого уникального сочетания Код_магазина, Наименование_товара покажет тебе максимальное значение статуса товара. Вместо агрегатной функции MAX(статус_товара), можно было использовать агрегатную функцию MIN(статус_товара) - минимальное значение статус_товара для данного сочетания полей Код_магазина, Наименование_товара.
Еще раз повторю, что я не вижу смысл в данном контексте выводить в запросе статус_товара, поэтому первый вариант запроса более логичный.
С уважением, Алексей
...
Рейтинг: 0 / 0
13.09.2006, 10:56
    #33983194
viko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно составить запрос
Ну это не совсем правильно, т к мне надо перечисление всех товаров для каждого магазина ,но чтоб не было повторяющихся в пределах каждого магазина. И статус товара мне надо видеть, т к этот запрос используется дальше, где нужна информация статуса товара.
...
Рейтинг: 0 / 0
13.09.2006, 11:22
    #33983310
-=AlexiS=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно составить запрос
Алексей привел Вам 2 решения .
для разных вариантов с и без статуса которые возврашают именно перечисление всех товаров для каждого магазина но чтоб не было повторяющихся в пределах каждого магазина. - что тут неправильного ?
непонятна ваша фраза этот запрос используется дальше где нужна информация статуса товара.
какой статус - если это группировка и "внутри" может быть несколько статусов.
Если вам нужен минимальный или максимальный - тогда опять-же решение вам привели.
Уточните что именно не так в приведенных решениях - поможем разобраться.
...
Рейтинг: 0 / 0
13.09.2006, 11:51
    #33983436
viko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно составить запрос
Вот в чем дело.
Наименование товара - это не название товара , а группировка. Под названием,например , "Метизы" находятся и шурупы ,и винты и т д.
И поэтому у одного магазина могут быть "Метизы" и как основной товар и как дополнительный. Но мне нужно видеть у каждого магазина все группировки без повторяющихся со своими статусами.
Например в файле след.записи :
10 Метизы 1 (где 10 - код магазина, Метизы - группировка , 1- статус )
10 Метизы 2
10 Пластик 2
10 Сантехника 2
У этого магазина основной товар - метизы , дополнительный также есть метизы
и еще пластик и еще сантехника. А увидеть хотелось бы следующее в результате запроса:
10 Метизы 1
10 Пластик 2
10 Сантехника 2
А почему нужно знать статус, т к этот источник я закладываю в ComboBox и надо, чтоб вначале видно было основной груз ,но при открытиии Combo виден бы был весь ассортимент (понятно без повторения). Надеюсь пояснила понятно .
...
Рейтинг: 0 / 0
13.09.2006, 11:56
    #33983469
AleksMed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно составить запрос
Ну так вот это:
Код: plaintext
1.
2.
3.
4.
SELECT Код_магазина, Наименование_товара, MAX(статус_товара) AS статус_товара
FROM Товары
GROUP BY Код_магазина, Наименование_товара
ORDER BY Код_магазина, Наименование_товара
тебе и даст желаемую выборку. Только я бы в ней MAX заменил на MIN.
...
Рейтинг: 0 / 0
13.09.2006, 12:23
    #33983594
viko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно составить запрос
Спасибо большое. Работает.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как правильно составить запрос / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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