powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как сделать, чтобы при запросе не исключались строки со значением NULL???
13 сообщений из 13, страница 1 из 1
Как сделать, чтобы при запросе не исключались строки со значением NULL???
    #34351926
Фотография Aleksiya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите, неоднократно сталкивалась с подобной проблемой, и пока так и не осознала, что тут предпринять, вот в очередной раз в столкнулась и решила задать вопрос.
УСЛОВИЕ: Имеются таблицы:
1.) Income_o (point, date,inc), Primary key - (point, date), (inc)<=1
2.) Outcome_o (point, date, out), Primary key - (point, date), (out)<=1 ;
3.) При (inc)>1, Primary key - code, Income (code, point, date, inc)
4.) При (out)>1, Primary key - code, Outcome (code, point, date, out)

В нашем случае, по условию (inc)<=1 и (out)<=1, соответсвенно Primary key - (point, date), надо вывести данные включающие NULL значения в результате запроса в столбцах income_o.inc, outcome_o.[out], ниже привожу мой запрос, в результате которого выходят данные "почти" соответствующий требованиям, но увы за исключением строк содержащих NULL значения, в выше указанных столбцах... PS// Требуется вывести данные (point, date, inc, out). Пробовала использовать IS NULL, не помогло, или может я просто не правильно использовала... В общем подскажите, помогите!!! ;-)

SELECT ALL income_o.point, income_o.[date], income_o.inc, outcome_o.[out] FROM Income_o
INNER JOIN outcome_o ON income_o.point=outcome_o.point
AND income_o.[date]=outcome_o.[date]
...
Рейтинг: 0 / 0
Как сделать, чтобы при запросе не исключались строки со значением NULL???
    #34352246
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksiya УСЛОВИЕ: Имеются таблицы:
1.) Income_o (point, date,inc), Primary key - (point, date), (inc)<=1
2.) Outcome_o (point, date, out), Primary key - (point, date), (out)<=1 ;
3.) При (inc)>1, Primary key - code, Income (code, point, date, inc)
4.) При (out)>1, Primary key - code, Outcome (code, point, date, out)Это очень странные и непонятные таблицы.

AleksiyaВ нашем случае, по условию (inc)<=1 и (out)<=1, соответсвенно Primary key - (point, date), У тебя первичный ключ прыгает по полям в зависимости от их значений???

Но если моя телепатия не подводит, тебе надо почитать учебник про соединение таблиц типа LEFT OUTER JOIN.
...
Рейтинг: 0 / 0
Как сделать, чтобы при запросе не исключались строки со значением NULL???
    #34352378
Фотография Aleksiya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlЭто очень странные и непонятные таблицы.

PS// Первые две таблицы... В общем сейчас кину более развернутый вопрос, думаю многие из присутствующих на форуме узнают эту тему...

AleksiyaВ нашем случае, по условию (inc)<=1 и (out)<=1, соответсвенно Primary key - (point, date), У тебя первичный ключ прыгает по полям в зависимости от их значений???

PS// Ключ не прыгает по полям, просто в доп. таблицах в качестве уникального ключа берется сочетание данных двух столбцов...
Но если моя телепатия не подводит, тебе надо почитать учебник про соединение таблиц типа LEFT OUTER JOIN.

А, вот за последнее спосибо, я тут как раз примерно эту тему и решила почитать...

Теперь изложу инфо повторно, в более доступном для понимания.

Начальное инфо: Фирма имеет несколько пунктов приема вторсырья. Каждый пункт получает деньги для их выдачи сдатчикам вторсырья. Сведения о получении денег на пункт приема записываются в таблицу:
Income_o(point, date,inc)
Первичным ключом является (point, date), т.е. прием денег (inc) производится не чаще одного раза в день. Сведения о выдаче денег за вторсырье записывается в таблицу:
Outcome_o(point, date, out)
В этой таблице также первичный ключ (point, date) гарантирует отчетность каждого пункта о выданных деньгах (out) не чаще одного раза в день.
В случае, когда приход и расход денег может фиксироваться несколько раз в день, используются таблицы (первичный ключ code):
Income(code, point, date, inc)
Outcome(code, point, date, out)

Имеются две задачи, в обоих случаях у меня проблема с тем, что не подтягиваются данные с NULL значениями.

Вопрос 1) В предположении, что приход и расход денег на каждом пункте приема фиксируется не чаще одного раза в день [т.е. первичный ключ (пункт, дата)], написать запрос с выходными данными (пункт, дата, приход, расход). Использовать таблицы Income_o и Outcome_o.

Мой вариант:
SELECT ALL income_o.point,income_o.[date],income_o.inc,outcome_o.[out] FROM Income_o
INNER JOIN outcome_o ON income_o.point=outcome_o.point
AND income_o.[date]=outcome_o.[date]


Вопрос 2) В предположении, что приход и расход денег на каждом пункте приема фиксируется произвольное число раз [в обе таблицы добавлен первичный ключ code] , написать запрос с выходными данными (point, date, out, inc), в котором каждому пункту за каждую дату соответствует одна строка.

Мой вариант:
select income.point,income.[date],sum(income.inc) as suminc,sum(outcome.[out]) as sumout
from income inner join outcome on
income.point=outcome.point and
income.[date]=outcome.[date]
group by income.point,income.[date]

Модератор:
над окном редактирования сообщения есть кнопочки.
они позволяют оформлять пост в более читабельной форме.
...
Рейтинг: 0 / 0
Как сделать, чтобы при запросе не исключались строки со значением NULL???
    #34352425
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AleksiyaТеперь изложу инфо повторно, в более доступном для понимания.Излагать надо не "доступно для понимания", а правильно.
Во первых, укажи в какой базе данных ты работаешь.
Во вторых, приведи скрипт, создающий все четыре твоих таблицы, со всеми первичными и внешними ключами если они есть.
В третьих, приведи скрипт в виде десятка строк insert into fisrttable(col1, col2) values(1,2) чтобы было на чем играться.
В четвертых, покажи какой резалтсет в итоге желательно получить.
Только тогда можно будет не играть в угадайку.

А пока, приходится угадывать. Уже угадывается, что вместо абстрактных out и inc, поля можно было бы назвать credit и debit. Во вторых, совершенно не понятно зачем для описаной задачи четыре таблицы? Вполне хватит одной:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create table daily_journal (
   point char( 10 ) not null,  // или какого оно там типа? Это код пункта если я правильно понял?
   transaction_date date not null, // не стоит называть поле даты date.
             // В большинстве СУБД date это  ключевое слово, потом чтобы работать с таким полем
             // прийдется постоянно напоминать СУБД что речь идет об имени поля а не типе данных или функции.
             // И самой будет сложно отыскивать подобные ошибки
   transaction_number char( 20 ) not null, // номер транзакции или код платежки или
             // приходно-расходного ордера, смотря как ваша бухгалтерия учитывает движение денег.
   credit numeric( 18 , 2 ) null,   // Для учета денег. 
   debit  numeric( 18 , 2 ) null,
            // и на всякий случай: для денег нельзя использовать типы float/double даже если захочется
   primary key (point, transaction_date, transaction_number)
);
Вот такая таблица полностью удовлетворяет нуждам учета обмена деньгами с филиалами или какими-нибудь постоянными клиентами. По вкусу туда еще можно добавить коментарии типа за что платеж или если это возврат денег, ссылку на предыдущую неправильную транзакцию.
А еще можно вместо двух полей credit и debit обойтись вообще одним полем amount и писать туда положительное или отрицательное число - сразу будет видно приход это или расход.
Тогда и изначальная проблема появляться в принципе не будет :)

Но если таблицы уже существуют, набиты данными и изменить структуру базы уже низзя, то показывай скрипт воссоздающий твои таблицы (только важные поля естественно). И скрипт наполняющий таблицы тестовыми данными.
...
Рейтинг: 0 / 0
Как сделать, чтобы при запросе не исключались строки со значением NULL???
    #34352444
Фотография Aleksiya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, огромное за отзвчивость, неожидала... Я не хотела сказать, что кто-то в меру интелекта не поймет моё изложение, а просто и сама поняла, что на сокращав инфо сделала глупость. Для меня такой вариант годится, т.к. я с этой темой бьюсь переодически и эта БД мне знакома. Неважно, короче, нехотела ни кого обидеть.
А, по поводу возможности изменения БД, увы, и дело не в том, что там залиты данные и т.д.. Тут можно было бы сделать что-нибудь сделать... Но это учёбная база и изменить её, я не имею права. И условия именно, таковы как, я и описала и изменить что-либо не могу, у меня есть только возможность проверить данные, но нет скриптов и т.д.. Нет таблицы БД... Но, проверка производится, насколько я помню на SQL Servere 2000. Вот, собственно и всё, что я могу добавить! Поставлю вопрос так: при использовании INNER JOIN устраняются из результата запроса значения с NULL, как можно этого избежать...
...
Рейтинг: 0 / 0
Как сделать, чтобы при запросе не исключались строки со значением NULL???
    #34352475
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksiyaу меня есть только возможность проверить данные, но нет скриптов и т.д.. Нет таблицы БД... Открою маленький секрет: для решения задачи не обязательно знать точную структуру таблицы. Достаточно знать примерную структуру таблицы.

AleksiyaНо, проверка производится, насколько я помню на SQL Servere 2000. Вот, собственно и всё, что я могу добавить! Поставлю вопрос так: при использовании INNER JOIN устраняются из результата запроса значения с NULL, как можно этого избежать...Читай про разные типы join'ов, конкретно для этой задачи тебе нужен не INNER JOIN а FULL OUTER JOIN
...
Рейтинг: 0 / 0
Как сделать, чтобы при запросе не исключались строки со значением NULL???
    #34352960
madvet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AleksiyaИ условия именно, таковы как, я и описала и изменить что-либо не могу, у меня есть только возможность проверить данные, но нет скриптов и т.д
Скрипты же можно скачать с сайта товарища Моисеенко :)
А по SQL у них на сайте же есть справка, вполне толковая
...
Рейтинг: 0 / 0
Как сделать, чтобы при запросе не исключались строки со значением NULL???
    #34353008
Фотография Aleksiya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlОткрою маленький секрет: для решения задачи не обязательно знать точную структуру таблицы. Достаточно знать примерную структуру таблицы.

White OwlЧитай про разные типы join'ов, конкретно для этой задачи тебе нужен не INNER JOIN а FULL OUTER JOIN

Спасибо, просвящусь!!! :-)
...
Рейтинг: 0 / 0
Как сделать, чтобы при запросе не исключались строки со значением NULL???
    #34353025
Фотография Aleksiya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
madvet
Скрипты же можно скачать с сайта товарища Моисеенко :)
А по SQL у них на сайте же есть справка, вполне толковая

Кто у нас такой товарищ Моисеенко и где эти скрипты??? У меня стоит дома SQL Server (2005), я не против эксперементировать без лишних заходов в сеть... На нынешней работе, у меня фактически нет практики с SQL, только преимущественно "пользовательские" настройки и вылавливание косяков в программе, которую мы внедряем, в июле планирую сменить место работы, надо бы поднатаскаться хоть на чём-то, а то, что не знала и то уже забыла!!! ;-)
В институте нам преподают на ORACLE, но мало вероятно найти работу на данной программе, а для того, чтобы использовать SQL Server нужно, на чём-то потренироваться!
...
Рейтинг: 0 / 0
Как сделать, чтобы при запросе не исключались строки со значением NULL???
    #34353072
madvet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AleksiyaКто у нас такой товарищ Моисеенко и где эти скрипты??? У меня стоит дома SQL Server (2005), я не против эксперементировать без лишних заходов в сеть... На нынешней работе, у меня фактически нет практики с SQL, только преимущественно "пользовательские" настройки и вылавливание косяков в программе, которую мы внедряем, в июле планирую сменить место работы, надо бы поднатаскаться хоть на чём-то, а то, что не знала и то уже забыла!!! ;-)
В институте нам преподают на ORACLE, но мало вероятно найти работу на данной программе, а для того, чтобы использовать SQL Server нужно, на чём-то потренироваться!
Товарищ Моисеенко - тот, кто занимается поддержкой сайта, отвечает на вопросы по задачам, выставляет новые задачи, расписывается на сертификатах и т.д. :)
Вот его сайт Там можно скачать скрипты БД. Я когда не знал про этот сайт, делал все вручную, т.е. по схеме БД создавал таблицы и вставлял данные Ctrl-C, Ctrl-V
...
Рейтинг: 0 / 0
Как сделать, чтобы при запросе не исключались строки со значением NULL???
    #34353082
Фотография Aleksiya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
madvetТоварищ Моисеенко - тот, кто занимается поддержкой сайта, отвечает на вопросы по задачам, выставляет новые задачи, расписывается на сертификатах и т.д. :)
Вот его сайт Там можно скачать скрипты БД. Я когда не знал про этот сайт, делал все вручную, т.е. по схеме БД создавал таблицы и вставлял данные Ctrl-C, Ctrl-V
Спасибо, огромное за ссылку, там именно то, что мне надо... Скачала, установила... Здорово, а то, я тоже раньше в Access создавала таблицы и т.д.. Но они были не полные и т.д.. Ещё раз спасибо!
...
Рейтинг: 0 / 0
Как сделать, чтобы при запросе не исключались строки со значением NULL???
    #34353123
madvet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AleksiyaСпасибо, огромное за ссылку, там именно то, что мне надо... Скачала, установила... Здорово, а то, я тоже раньше в Access создавала таблицы и т.д.. Но они были не полные и т.д.. Ещё раз спасибо!
На здоровье! Только задачи не публикуй на форуме :)
...
Рейтинг: 0 / 0
Как сделать, чтобы при запросе не исключались строки со значением NULL???
    #34353323
Фотография Aleksiya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
madvet
На здоровье! Только задачи не публикуй на форуме :)


ОК, исправлюсь, обещаю!!! ;-)
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как сделать, чтобы при запросе не исключались строки со значением NULL???
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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