|
|
|
Как сделать, чтобы при запросе не исключались строки со значением NULL???
|
|||
|---|---|---|---|
|
#18+
Помогите, неоднократно сталкивалась с подобной проблемой, и пока так и не осознала, что тут предпринять, вот в очередной раз в столкнулась и решила задать вопрос. УСЛОВИЕ: Имеются таблицы: 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] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2007, 13:57 |
|
||
|
Как сделать, чтобы при запросе не исключались строки со значением NULL???
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2007, 17:54 |
|
||
|
Как сделать, чтобы при запросе не исключались строки со значением NULL???
|
|||
|---|---|---|---|
|
#18+
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] Модератор: над окном редактирования сообщения есть кнопочки. они позволяют оформлять пост в более читабельной форме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2007, 20:41 |
|
||
|
Как сделать, чтобы при запросе не исключались строки со значением NULL???
|
|||
|---|---|---|---|
|
#18+
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. А еще можно вместо двух полей credit и debit обойтись вообще одним полем amount и писать туда положительное или отрицательное число - сразу будет видно приход это или расход. Тогда и изначальная проблема появляться в принципе не будет :) Но если таблицы уже существуют, набиты данными и изменить структуру базы уже низзя, то показывай скрипт воссоздающий твои таблицы (только важные поля естественно). И скрипт наполняющий таблицы тестовыми данными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2007, 22:08 |
|
||
|
Как сделать, чтобы при запросе не исключались строки со значением NULL???
|
|||
|---|---|---|---|
|
#18+
Спасибо, огромное за отзвчивость, неожидала... Я не хотела сказать, что кто-то в меру интелекта не поймет моё изложение, а просто и сама поняла, что на сокращав инфо сделала глупость. Для меня такой вариант годится, т.к. я с этой темой бьюсь переодически и эта БД мне знакома. Неважно, короче, нехотела ни кого обидеть. А, по поводу возможности изменения БД, увы, и дело не в том, что там залиты данные и т.д.. Тут можно было бы сделать что-нибудь сделать... Но это учёбная база и изменить её, я не имею права. И условия именно, таковы как, я и описала и изменить что-либо не могу, у меня есть только возможность проверить данные, но нет скриптов и т.д.. Нет таблицы БД... Но, проверка производится, насколько я помню на SQL Servere 2000. Вот, собственно и всё, что я могу добавить! Поставлю вопрос так: при использовании INNER JOIN устраняются из результата запроса значения с NULL, как можно этого избежать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2007, 22:41 |
|
||
|
Как сделать, чтобы при запросе не исключались строки со значением NULL???
|
|||
|---|---|---|---|
|
#18+
Aleksiyaу меня есть только возможность проверить данные, но нет скриптов и т.д.. Нет таблицы БД... Открою маленький секрет: для решения задачи не обязательно знать точную структуру таблицы. Достаточно знать примерную структуру таблицы. AleksiyaНо, проверка производится, насколько я помню на SQL Servere 2000. Вот, собственно и всё, что я могу добавить! Поставлю вопрос так: при использовании INNER JOIN устраняются из результата запроса значения с NULL, как можно этого избежать...Читай про разные типы join'ов, конкретно для этой задачи тебе нужен не INNER JOIN а FULL OUTER JOIN ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2007, 23:29 |
|
||
|
Как сделать, чтобы при запросе не исключались строки со значением NULL???
|
|||
|---|---|---|---|
|
#18+
AleksiyaИ условия именно, таковы как, я и описала и изменить что-либо не могу, у меня есть только возможность проверить данные, но нет скриптов и т.д Скрипты же можно скачать с сайта товарища Моисеенко :) А по SQL у них на сайте же есть справка, вполне толковая ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2007, 18:28 |
|
||
|
Как сделать, чтобы при запросе не исключались строки со значением NULL???
|
|||
|---|---|---|---|
|
#18+
White OwlОткрою маленький секрет: для решения задачи не обязательно знать точную структуру таблицы. Достаточно знать примерную структуру таблицы. White OwlЧитай про разные типы join'ов, конкретно для этой задачи тебе нужен не INNER JOIN а FULL OUTER JOIN Спасибо, просвящусь!!! :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2007, 19:34 |
|
||
|
Как сделать, чтобы при запросе не исключались строки со значением NULL???
|
|||
|---|---|---|---|
|
#18+
madvet Скрипты же можно скачать с сайта товарища Моисеенко :) А по SQL у них на сайте же есть справка, вполне толковая Кто у нас такой товарищ Моисеенко и где эти скрипты??? У меня стоит дома SQL Server (2005), я не против эксперементировать без лишних заходов в сеть... На нынешней работе, у меня фактически нет практики с SQL, только преимущественно "пользовательские" настройки и вылавливание косяков в программе, которую мы внедряем, в июле планирую сменить место работы, надо бы поднатаскаться хоть на чём-то, а то, что не знала и то уже забыла!!! ;-) В институте нам преподают на ORACLE, но мало вероятно найти работу на данной программе, а для того, чтобы использовать SQL Server нужно, на чём-то потренироваться! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2007, 19:50 |
|
||
|
Как сделать, чтобы при запросе не исключались строки со значением NULL???
|
|||
|---|---|---|---|
|
#18+
AleksiyaКто у нас такой товарищ Моисеенко и где эти скрипты??? У меня стоит дома SQL Server (2005), я не против эксперементировать без лишних заходов в сеть... На нынешней работе, у меня фактически нет практики с SQL, только преимущественно "пользовательские" настройки и вылавливание косяков в программе, которую мы внедряем, в июле планирую сменить место работы, надо бы поднатаскаться хоть на чём-то, а то, что не знала и то уже забыла!!! ;-) В институте нам преподают на ORACLE, но мало вероятно найти работу на данной программе, а для того, чтобы использовать SQL Server нужно, на чём-то потренироваться! Товарищ Моисеенко - тот, кто занимается поддержкой сайта, отвечает на вопросы по задачам, выставляет новые задачи, расписывается на сертификатах и т.д. :) Вот его сайт Там можно скачать скрипты БД. Я когда не знал про этот сайт, делал все вручную, т.е. по схеме БД создавал таблицы и вставлял данные Ctrl-C, Ctrl-V ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2007, 21:10 |
|
||
|
Как сделать, чтобы при запросе не исключались строки со значением NULL???
|
|||
|---|---|---|---|
|
#18+
madvetТоварищ Моисеенко - тот, кто занимается поддержкой сайта, отвечает на вопросы по задачам, выставляет новые задачи, расписывается на сертификатах и т.д. :) Вот его сайт Там можно скачать скрипты БД. Я когда не знал про этот сайт, делал все вручную, т.е. по схеме БД создавал таблицы и вставлял данные Ctrl-C, Ctrl-V Спасибо, огромное за ссылку, там именно то, что мне надо... Скачала, установила... Здорово, а то, я тоже раньше в Access создавала таблицы и т.д.. Но они были не полные и т.д.. Ещё раз спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2007, 21:35 |
|
||
|
Как сделать, чтобы при запросе не исключались строки со значением NULL???
|
|||
|---|---|---|---|
|
#18+
AleksiyaСпасибо, огромное за ссылку, там именно то, что мне надо... Скачала, установила... Здорово, а то, я тоже раньше в Access создавала таблицы и т.д.. Но они были не полные и т.д.. Ещё раз спасибо! На здоровье! Только задачи не публикуй на форуме :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2007, 23:04 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=34353082&tid=1346234]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
181ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 517ms |

| 0 / 0 |
