powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / SELECT запрос, помогите пожалуйста, до утра надо разобраться.
8 сообщений из 8, страница 1 из 1
SELECT запрос, помогите пожалуйста, до утра надо разобраться.
    #33600995
Cyric
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вобщем нужно вывести список товаров, которые хранятся на каждом складе.
Хотел сделать это с помощью конструкции:

SELECT Имя FROM Товары WHERE NOT EXISTS (;
SELECT id FROM Склады WHERE NOT EXISTS(;
SELECT * FROM Хранение WHERE (Хранение.склад=Склады.id) AND (Хранение.Товар=Товары.id)))

Т.е. должен выбирать Товары, для которых нет Складов, таких, чтобы на них не находился наш товар.
Но к сожалению FoxPro не хочет обрабатывать больше двух вложенных SELECT'ов, ругается с ошибкой.
Какой альтернативный вариант есть?

Выручите пожалуйста, пытаюсь доделать курсовую человеку, которого отчислить могут если не сдаст :(
...
Рейтинг: 0 / 0
SELECT запрос, помогите пожалуйста, до утра надо разобраться.
    #33601019
ivenhoe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может, временную таблицу сделать, куда результат самого внутреннего запроса скидывать?
...
Рейтинг: 0 / 0
SELECT запрос, помогите пожалуйста, до утра надо разобраться.
    #33601024
w3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Итак, имеем:
Товар.id
Товар.Имя
Склады.id
Хранение.Склад
Хранение.Товар
Надо: "вывести список товаров, которые хранятся на каждом складе"

Код: plaintext
1.
2.
3.
select Хранение.Склад, Товар.Имя from Хранение ;
left join Товар ;
on Хранение.Товар=Товар.id ;
group by Хранение.Склад, Товар.Имя
...
Рейтинг: 0 / 0
SELECT запрос, помогите пожалуйста, до утра надо разобраться.
    #33601033
Cyric
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 w3d
К сожалению выводит все товары (т.е. не только те, что на всех складах присутствуют), да ещё и по несколько раз, для каждого склада на котором присутствует, т.е. по сути всё содержимое таблицы "Хранение" вываливает.

2 ivenhoe
Я бы так и сделал, но внутренний запрос включает в себя условия, использующие данные из внешних запросов, т.е. временную таблицу создать не получится. По-крайней мере я не знаю как, возможно варианты есть, я их могу опробывать, главное чтоб работало как-то...
...
Рейтинг: 0 / 0
SELECT запрос, помогите пожалуйста, до утра надо разобраться.
    #33601065
w3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Покажи таблички, или вышли в мыло в профиле
...
Рейтинг: 0 / 0
SELECT запрос, помогите пожалуйста, до утра надо разобраться.
    #33601067
w3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно говоря, твоя задача: "список товаров, которые хранятся на каждом складе" - это и есть таблица Хранение.
Уточни, что именно надо получить в результате.
...
Рейтинг: 0 / 0
SELECT запрос, помогите пожалуйста, до утра надо разобраться.
    #33602966
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подсчитай количество складов для каждого товара и сравни с общим количеством складов.

Т.е. выполняешь в 2 этапа:

1) Подсчет общего количества складов

Код: plaintext
1.
2.
LOCAL laStorage( 1 )
SELECT COUNT(*) FROM Склады INTO ARRAY laStorage

2) Определяю товары, которые есть на ВСЕХ складах

Код: plaintext
1.
2.
3.
4.
5.
SELECT Товары.Имя ;
FROM Товары ;
INNER JOIN Склады ON Склады.Товар=Товары.id
GROUP BY Товары.Имя ;
HAVING COUNT(DISTINCT Склады.Id)=m.laStorage
...
Рейтинг: 0 / 0
SELECT запрос, помогите пожалуйста, до утра надо разобраться.
    #33603601
Cyric
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМПодсчитай количество складов для каждого товара и сравни с общим количеством складов.

Т.е. выполняешь в 2 этапа:

1) Подсчет общего количества складов

Код: plaintext
1.
2.
LOCAL laStorage( 1 )
SELECT COUNT(*) FROM Склады INTO ARRAY laStorage

2) Определяю товары, которые есть на ВСЕХ складах

Код: plaintext
1.
2.
3.
4.
5.
SELECT Товары.Имя ;
FROM Товары ;
INNER JOIN Склады ON Склады.Товар=Товары.id
GROUP BY Товары.Имя ;
HAVING COUNT(DISTINCT Склады.Id)=m.laStorage


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


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