Модераторы: skyboy

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Полное объединение таблиц? 
:(
    Опции темы
ekaterina_tw
Дата 29.4.2009, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 25.1.2008

Репутация: нет
Всего: нет



спасибо.
если таблица такого вида

Klient    Bank    Akcii
Клиент1    Банк1    1
Клиент1    Банк4    14
Клиент2    Банк2    2
Клиент3    Банк3    3
Клиент4    Банк4    4


, то мне нужен результат:

Klient    Bank    Akcii
Клиент1    Банк1    1
Клиент1    Банк2    0
Клиент1    Банк3    0
Клиент1    Банк4    14

Клиент2    Банк1    0
Клиент2    Банк2    2
Клиент2    Банк3    0
Клиент2    Банк4    0


Клиент3    Банк1    0
Клиент3    Банк2    0
Клиент3    Банк3    3
Клиент3    Банк4    0

Клиент4    Банк1    0
Клиент4    Банк2    0
Клиент4    Банк3    0
Клиент4    Банк4    4

По-моему первый вариант, который Вы написали, как раз это и выдает.

Добавлено через 2 минуты и 35 секунд
Цитата(ТоляМБА @  29.4.2009,  22:38 Найти цитируемый пост)
Я имел ввиду что при первом моем запросе строчка
Клиент1    Банк4    0
есть косяк. 

ага, понятно. 
я имею ввиду, что при использовании вашего запроса внутри SELECT sum(Akcii) GROUP BY Банк
результат получается верным. Разве нет?
PM MAIL   Вверх
ТоляМБА
Дата 29.4.2009, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 4
Всего: 252



Цитата(ekaterina_tw @  30.4.2009,  00:43 Найти цитируемый пост)
По-моему первый вариант, который Вы написали, как раз это и выдает.

Первый запрос выдаст:

Klient    Bank    Akcii
Клиент1    Банк1    1
Клиент1    Банк2    0
Клиент1    Банк3    0
Клиент1    Банк4    0
Клиент1    Банк4    14

Клиент2    Банк1    0
Клиент2    Банк2    2
Клиент2    Банк3    0
Клиент2    Банк4    0

Клиент3    Банк1    0
Клиент3    Банк2    0
Клиент3    Банк3    3
Клиент3    Банк4    0

Клиент4    Банк1    0
Клиент4    Банк2    0
Клиент4    Банк3    0
Клиент4    Банк4    4

красным выделен косяк.
PM   Вверх
ekaterina_tw
Дата 29.4.2009, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 25.1.2008

Репутация: нет
Всего: нет



ага, а GROUP BY прекрасно с этим косяком справится.
PM MAIL   Вверх
ТоляМБА
Дата 29.4.2009, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 4
Всего: 252



Цитата(ekaterina_tw @  29.4.2009,  23:40 Найти цитируемый пост)
Как же это сделать, используя FULL OUTER JOIN?
Нету у меня под рукой MS-SQL, писал на акцессе, а он FULL OUTER JOIN не поддерживает  smile

Добавлено через 2 минуты и 13 секунд
Цитата(ekaterina_tw @  30.4.2009,  00:51 Найти цитируемый пост)
ага, а GROUP BY прекрасно с этим косяком справится
Нет, с ним справился SUM, а GROUP BY из-за того что используется агрегированая ф-ия.
PM   Вверх
DimW
Дата 30.4.2009, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 4
Всего: 44



Цитата(ekaterina_tw @  29.4.2009,  21:40 Найти цитируемый пост)
может поясните свою мысль?
ваш запрос не поняла, содержимое таблицы мне не известно, Insert использовать не могу

1) я создаю таблицу.
2) наполняю ее данными.
3) выполняю запрос который должен решить вашу проблему, с данными которые на втором шаге я вставил в таблицу.

Цитата(ekaterina_tw @  29.4.2009,  22:18 Найти цитируемый пост)
при чем здесь ''клиент_1', 'клиент_2'? я же не знаю, какие строки содержатся в таблице

это тестовые данные, представленны для наглядности.


PM MAIL ICQ   Вверх
Zloxa
Дата 30.4.2009, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(ekaterina_tw @  29.4.2009,  21:40 Найти цитируемый пост)
Как же это сделать, используя FULL OUTER JOIN?

Здесь full outer не нужен.
Тема озаглавлена не правильно.
Цитата(ekaterina_tw @  29.4.2009,  21:58 Найти цитируемый пост)
что такое 'dual'

dual эта таблица, которая содержит одну запись
Используется для того, чтобы иммитировать исходные данные.
Сам запрос начинается с пятой строки.
Что такое "возвращает нулевые строки", мне не понятно



--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
ekaterina_tw
Дата 30.4.2009, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 25.1.2008

Репутация: нет
Всего: нет



DimW, 
спасибо, действительно все верно.  Отличный вариант!


Zloxa, 
спасибо! Тоже все работает отлично! 
PM MAIL   Вверх
DimW
Дата 30.4.2009, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 4
Всего: 44



Цитата(ekaterina_tw @  30.4.2009,  14:45 Найти цитируемый пост)
DimW, 
спасибо, действительно все верно.  Отличный вариант!

по поводу отличного я сомниваюсь, всетаки два фулскана и как минимум одна сортировка. хотя в mssql может все не так как я думаю.
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0494 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.