powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / UNION SELECT
25 сообщений из 35, страница 1 из 2
UNION SELECT
    #32526537
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблица, в ней есть поля BILL_ID (номер счета) и BILL_ON (номер счета, на который списана запись). Принцип работы такой: фирме выставляется общий счет (например, за год), он записывается в таблицу с идентификатором BILL_ID. Помимо этого в таблице есть текущие счета, по которым идет оплата услуг втечение года. Когда приходит общий счет, на него списывают все текущие, т.е. в строку каждого текущего счета добавляется идентификатор общего счета, на который он списывается (BILL_ON).
Мне необходимо сделать запрос:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
BILL_ID / ... / BILL_ON
    1      ...        - (общий счет)
    -      ...        1 (текущий счет, списанный на общий)
    -      ...        1
    -      ...        1
    2      ...        -
    -      ...        2
    -      ...        2
    -      ...        2
По всей видимости тут необходимо использовать UNION-запрос, но только не знаю как.
...
Рейтинг: 0 / 0
UNION SELECT
    #32526588
zz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так чего, общие и текущие счета в одну таблицу пишутся? Или разные? Если в разные - то обычный джойн...
...
Рейтинг: 0 / 0
UNION SELECT
    #32526595
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все счета пишутся в одну таблицу
...
Рейтинг: 0 / 0
UNION SELECT
    #32526606
zz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну а как-то можно отличить по записи, общий это счет или текущий?
...
Рейтинг: 0 / 0
UNION SELECT
    #32526609
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select mainbil.* , parentbil.*
from (select * from таблица where BILL_ON is null ) as mainbil inner join
(select * from таблица where BILL_ON is not null ) as parentbil
on mainbil.BILL_ID =parentbil.BILL_ON
...
Рейтинг: 0 / 0
UNION SELECT
    #32526617
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 zz
а зачем их "отличать" текущие простые потомки общего

я пока совсем не понимаю при чем тут union-join

что ORDER BY BILL_ID, BILL_ON
потребно?
...
Рейтинг: 0 / 0
UNION SELECT
    #32526619
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что сверх ORDER BY BILL_ID, BILL_ON
потребно?
...
Рейтинг: 0 / 0
UNION SELECT
    #32526634
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлексейК
Это уже ближу к правде :)
Этот запрос растягивает общий счет и списанные на него в одну строку.
Сейчас попробую додумать

zz
У общего счета поле BILL_ID is not null, а у списанного на него BILL_ID = null and BILL_ON is not nul

Victosha
Как понимать слово ПОТРЕБНО?
...
Рейтинг: 0 / 0
UNION SELECT
    #32526635
zz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тьфу, черт, запутал совсем юнионами своими...
А потребно
IIf(([BILL_ON] Is Null);[BILL_ID];"-") - это в запросе на таблицу вместо BILL_ID
...
Рейтинг: 0 / 0
UNION SELECT
    #32526644
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zz
за UNIONы прошу прощения
А предложенный вариант не ПОТРЕБЕН ввиду особенностей сортировки
...
Рейтинг: 0 / 0
UNION SELECT
    #32526646
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
потребно=требуется
если написать

Select *
from YourTbl
ORDER BY BILL_ID, BILL_ON

это даст тот вид возврата, который Вам хотелось бы получить?

ИЛИ КРОМЕ сортировки в правильной последовательности счетов что еще нужно - сложить-умножить-соединить?
...
Рейтинг: 0 / 0
UNION SELECT
    #32526654
zz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда я вообще ничего не понимаю.
И присоединясь к вопросу Victosha.
Что вам нужно в итоговом запросе помимо сортировок по BILL_ID и BILL_ON?
...
Рейтинг: 0 / 0
UNION SELECT
    #32526665
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BILL_ID / ... / BILL_ON
1 ... - (общий счет)
- ... 1 (текущий счет, списанный на общий)
- ... 1
- ... 1
2 ... -
- ... 2
- ... 2
- ... 2

вот подумал, может быть это вопрос НЕ О ЗАПРОСЕ, А ОБ ОТЧЕТЕ?
...
Рейтинг: 0 / 0
UNION SELECT
    #32526676
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлексейК
что-то не получается :(

zz и Victosha
Пожалуйста, обратитесь к моему вопросу (1-й сабж) - там показаны особенности сортировки.

Предложенный вариант от Victosha не подходит, т.к. возвращает все записи из таблицы в неясно каком порядке.

В таблице помимо разнесенных текущих счетов есть и неразнесенные, которые отображать не нужно...
Попробовал:
Код: plaintext
1.
2.
3.
Select *
from YourTbl
where (bill_on is null and bill_id is null)=false
ORDER BY BILL_ID, BILL_ON
Но этот запрос показывает сначала все разнесенные счета, а потом все общие.

вот подумал, может быть это вопрос НЕ О ЗАПРОСЕ, А ОБ ОТЧЕТЕ? Да это для отчета
...
Рейтинг: 0 / 0
UNION SELECT
    #32526707
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторwhere (bill_on is null and bill_id is null)=false

ЭТО (неразнесенные текущие) пишется так

Код: plaintext
WHERE BILL_ON IS NOT NULL

если кроме того, есть строки с неназначенными общими счетами, то

Код: plaintext
WHERE bill_id is not null  AND BILL_ON IS NOT NULL

Далее, ORDER BY в запросе НЕ НУЖЕН. Сортируйте прямо в отчете.

ЗЫ
Ваш фильтр отбрасывает ТОЛЬКО и ТОЛЬКО те записи, в которых НЕТ ОБОИХ СЧЕТОВ ОДНОВРЕМЕННО, ТО ЕСТЬ равнозначен BILL_ID IS NOT NULL
...
Рейтинг: 0 / 0
UNION SELECT
    #32526710
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поправка - равнозначен не общелогически а "по бизнесправилам".
...
Рейтинг: 0 / 0
UNION SELECT
    #32526719
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
равнозначен BILL_ID IS NOT NULL
этот фильтр возвращает те записи, в которых либо BILL_ID is NOT null, либо BILL_ON is NOT null

Сортируйте прямо в отчете.
Как это сделать в отчете я тоже не знаю
...
Рейтинг: 0 / 0
UNION SELECT
    #32526737
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про фильтр Вы правы - пустил я воздуху...

Про отчет. Запустите Мастер отчетов, в качестве источника выберите свою таблицу. Дальше аккуратно и внимательно следуйте мастеру. Смотрите ка появляющиеся в определенных местах кнопочки - пробуйте как работают.
Получится ОБЯЗАТЕЛЬНО, ну, может не с САМОГО первого раза.
...
Рейтинг: 0 / 0
UNION SELECT
    #32526760
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victosha
Be manner...
Объясни мне, пожалуста, как так может быть, что в запросе выборку сделать не получается, а в отчете обязательно получиться?
...
Рейтинг: 0 / 0
UNION SELECT
    #32526763
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
ORDER BY iif(isnull(BILL_ON), BILL_ID, BILL_ON), iif(isnull(BILL_ON),  0 ,  1 )

?
...
Рейтинг: 0 / 0
UNION SELECT
    #32526765
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У кого-нибудь есть более дельные предложения?
...
Рейтинг: 0 / 0
UNION SELECT
    #32526772
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторУ кого-нибудь есть более дельные предложения?

Э-э-э
А мое не подойдет ?
...
Рейтинг: 0 / 0
UNION SELECT
    #32526774
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
paparome
Супер!
Подошло!
Спасибо всем :)
...
Рейтинг: 0 / 0
UNION SELECT
    #32526793
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторчто в запросе выборку сделать не получается

я не понял, что не получается в запросе?

Понял я следующее - (по пунктам)
1) отобрать требуется все те записи, у которых заполнены КАК BILL_ID
ТАК И BILL_ON

ТАКОЙ отбор делает запрос
Код: plaintext
1.
2.
3.
4.
SELECT *

FROM YourTable

WHERE bill_id is not null  AND BILL_ON IS NOT NULL

2) поля BILL_ON заполнены значениями BILL_ID (ТАК ЛИ ЭТО ?), которые являются родительскими для данной записи.

3) В отчете ТРЕБУЕТСЯ а) отображение в правильном порядке СОРТИРОВКИ б) в определенном формате.
Здесь надо сказать следующее - ПОРЯДОК СОРТИРОВКИ в ОТЧЕТЕ не имеет отношения к порядку сортировки в запросе. У отчета свои механизмы сортировки. Поэтому и СОРТИРОВАТЬ надо сразу в отчете - ЭТО получится.
О формате есть смысл говорить после того, как получена сортировка.

ЗЫ
Все мною написанное исходило из вышеизложенного понимания. Если я НЕ ТАК что-то понял - поправьте.
...
Рейтинг: 0 / 0
UNION SELECT
    #32526807
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Виктоша

Не - не правильно понял:
- Заполнено либо BILL_ON, либо BILL_ID
- Задача заключалась не в правильной выборке (выборку он сдела), а в правильной сортировке

PS:
Извини меня, что я перебил твою мысль :(
Но - проехали уже :)
...
Рейтинг: 0 / 0
25 сообщений из 35, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / UNION SELECT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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