powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как сделать выборку из таблицы?
25 сообщений из 57, страница 1 из 3
Как сделать выборку из таблицы?
    #32496577
SSB777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые Господа, простая на первый взгляд задача оказалась весьма проблематичной.
Есть база (IB) и клиентская программа написанная на Delphi (FIB+).
В базе есть таблица примерно с такой условной структурой:

Код : Integer
Код_Склада : Integer
Код_Товара : Integer
Количество : Integer
.... и еще несколько полей, которые в данный момент не важны.

Данные по всем складам (число складов чуть болше 60) для всех категорий товара (больше 5000) хранятьтся в одной таблице, один и тотже товар (поле Код_Товара) имеется на нескольких разных складах (поле Код_склада) в разном количестве (поле Количество), может быть Количество=0.
Необходимо сделать выборку из таблицы для товара (Код_Товара) имеющегося на одном складе (условно большом) и отсутствующего на другом (условно малом).

IB и SQL я практически не знаю, с Delphi правда получше, поэтому первая мысль была такая: "Ну это просто..."

A - номер "большого" склада
В - номер "малого" склада
SELECT ...
WHERE SKLAD_CODE=А AND SKLAD_CODE<>B AND C_OSTAT>0;

примерно через полчаса я понял какую глупость написал и то, что одним Select не обойтись :(
В общем большая просьба к почтенной публике, помогите советом.
...
Рейтинг: 0 / 0
Как сделать выборку из таблицы?
    #32496651
Kadr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Select .....
where (sklad_code=A) and (kod_tovar not in (select kod_tovar .... where sklad_code=B))
...
Рейтинг: 0 / 0
Как сделать выборку из таблицы?
    #32496757
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А потом долго биться головой об стенку, пока не запомнишь, что:
КОНСТРУКЦИЯ WHERE NOT IN (SELECT...) НЕЭФФЕКТИВНА !
(в силу архитектурных особенностей InterBase)
...
Рейтинг: 0 / 0
Как сделать выборку из таблицы?
    #32496808
Фотография dalai lamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По моему, Мимопроходящий умничает за наш, за ламерский, счет. "Неэффективна" - а как надо-то - не говорит!
...
Рейтинг: 0 / 0
Как сделать выборку из таблицы?
    #32496817
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МОЖЕТ ТАК ?
Код: plaintext
1.
2.
3.
4.
SELECT *
FROM TABLE1 B1
JOIN TABLE1 B2 ON (B1.TOVAR_CODE = B2.TOVAR_CODE)
WHERE B1.SKLAD_CODE = 'A' AND B2.SKLAD_CODE = 'B' AND B2.C_OSTAT >  0 


Best regards,
Dnico.
...
Рейтинг: 0 / 0
Как сделать выборку из таблицы?
    #32496823
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий - всегда отсылает к документации !!!
Его ответы можно даже не читать ...

Best regards,
Dnico.
...
Рейтинг: 0 / 0
Как сделать выборку из таблицы?
    #32496856
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помимо документации я могу отсылать и сюда
...
Рейтинг: 0 / 0
Как сделать выборку из таблицы?
    #32496860
Фотография dalai lamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий, вот пожалуемся на тебя модератору, что ты такой гад! Теперь не хочеться заходить на этот форум из-за тебя! Спросишь чтонибудь, а тебя накй пошлют
...
Рейтинг: 0 / 0
Как сделать выборку из таблицы?
    #32496862
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сходил?
...
Рейтинг: 0 / 0
Как сделать выборку из таблицы?
    #32496865
Фотография dalai lamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я на ПТ часто хожу, эту ссылку давно знаю! Сам иди туда!

...
Рейтинг: 0 / 0
Как сделать выборку из таблицы?
    #32496876
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SSB777Необходимо сделать выборку из таблицы для товара (Код_Товара) имеющегося на одном складе (условно большом) и отсутствующего на другом (условно малом)...одним Select не обойтись
Ответ заключается в вопросе.
Вот один из вариантов (и весьма быстрый)
Код: plaintext
1.
2.
3.
4.
5.
SELECT ... 
WHERE SKLAD_CODE=А  AND C_OSTAT> 0 ; 
UNION ALL
SELECT ... 
WHERE
  SKLAD_CODE=B AND C_OSTAT= 0 
...
Рейтинг: 0 / 0
Как сделать выборку из таблицы?
    #32496880
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На ПТ?
Нормальным пацанам тем делать нечего (почти)
...
Рейтинг: 0 / 0
Как сделать выборку из таблицы?
    #32496888
Фотография dalai lamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вижу нормальные пацаны типа тебя предпочитают трепаться и самоутверждаться на профессиональных форумах!
...
Рейтинг: 0 / 0
Как сделать выборку из таблицы?
    #32496894
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2FreemanZAV:
Не, не катит. Ему нужно найти только тот товар , который есть на складе А и отсутсвует на складе В
...
Рейтинг: 0 / 0
Как сделать выборку из таблицы?
    #32496895
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А че такое ПТ и как ставить смайлики в тексте?
...
Рейтинг: 0 / 0
Как сделать выборку из таблицы?
    #32496903
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2dalai lamer:
И кто начал?
...
Рейтинг: 0 / 0
Как сделать выборку из таблицы?
    #32496909
Фотография dalai lamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не самоутверждался и не издевался над задающими вопросы! Я лишь поднял тему о твоем поведении!
...
Рейтинг: 0 / 0
Как сделать выборку из таблицы?
    #32496914
Фотография dalai lamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А все боятся меня поддержать, потому что ты грубо ответишь!

зы. где модератор??
...
Рейтинг: 0 / 0
Как сделать выборку из таблицы?
    #32496918
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПТ - это тут
А смайлик на этом сайте только один (почему-то)
Рисуешь так:
Код: plaintext
:)))

Получается так -
...
Рейтинг: 0 / 0
Как сделать выборку из таблицы?
    #32496933
FreemanZAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точняк. Не катит. Получается не И а ИЛИ.
...
Рейтинг: 0 / 0
Как сделать выборку из таблицы?
    #32496935
SSB777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Простите Господа, но Вы отвлеклись от темы :-)
Отдельно спасибо ответившим конструктивно , вечером буду пробовать, завтра смогу описать результат.
Опять же отдельно вопрос Мимопроходящему, а что значит
НЕЭФФЕКТИВНА? не работает? работает медленно? работает неправильно?
...
Рейтинг: 0 / 0
Как сделать выборку из таблицы?
    #32496952
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SSB777
Я немного подумал и вот кажется самое то, что нужно
Код: plaintext
1.
2.
3.
4.
SELECT *
FROM TABLE1 B1
JOIN TABLE1 B2 ON (B1.TOVAR_CODE = B2.TOVAR_CODE)
WHERE B1.SKLAD_CODE = 'A' AND B2.SKLAD_CODE = 'B' AND B1.C_OSTAT >  0  AND B2.C_OSTAT =  0  



Best regards,
Dnico.
...
Рейтинг: 0 / 0
Как сделать выборку из таблицы?
    #32496958
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автора что значит НЕЭФФЕКТИВНА?
Вот это уже другой разговор.
Дела в том, что IB при выполнении запроса типа WHERE ... [NOT] IN (SELECT...) не кеширует результаты подзапроса. И как следствие, этот запрос будет дёргаться каждый раз заново, для каждой записи фильтруемой таблицы. Как следствие, производительность такой конструкции очень низкая и её следует избегать.
...
Рейтинг: 0 / 0
Как сделать выборку из таблицы?
    #32496982
Фотография dalai lamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Вот это уже другой разговор.

Это ты решил разжевать не потому что тебя "правильно" спросили, а потому что моя критика снизу на тебя подействовала!
...
Рейтинг: 0 / 0
Как сделать выборку из таблицы?
    #32496994
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2dalai lamer:
Мальчик, вернись в свой ПТ. У тебя ж там 68% постов. Не мешай дядям работать.
...
Рейтинг: 0 / 0
25 сообщений из 57, страница 1 из 3
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как сделать выборку из таблицы?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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