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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выборка из 3 таблиц 
:(
    Опции темы
Fantaz1
Дата 5.11.2011, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Помогите создать запрос. Входящие таблицы и какой должен быть результат в прикрепленном файле.
Я уже как только не пробовал, не получается. Дошол до такого результата:
Код

SELECT    TableA.code,TableA.aname, TableB.bname, TableC.cname
FROM         TableA LEFT OUTER JOIN
                      TableC ON TableA.code = TableC.code LEFT OUTER JOIN
                      TableB ON TableA.code = TableB.code

Почти то, но поля bname и cname повторяются, а надо что б не повторялись, как выбрать уникальные значения со столбца, что то типо distinct только по конкретному столбцу

Присоединённый файл ( Кол-во скачиваний: 21 )
Присоединённый файл  SQL.jpg 16,15 Kb
PM MAIL   Вверх
tzirechnoy
Дата 6.11.2011, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Простите, Вы о чём? В приведённом примере повторяются только значения NULL. 

И дажэ если решыть, что это Вам как-то мешает, то следует банальный вопрос: а что конкретно должно быть в полях code, aname, cname если, допустим, у нас в bname NULL (учитывая, что для каждого из этих полей есть по два логичных варианта).
эти? 
PM MAIL   Вверх
Fantaz1
Дата 6.11.2011, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



В прикрепленном файле результат который должен быть а не тот который у меня получился
PM MAIL   Вверх
chip_and_dayl
Дата 6.11.2011, 11:56 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

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



То что  вы  хотите не  есть логичным

почему в результативной таблице следующие данные
...  bname       cname
...  aaa            xxx
...  bbb            yyy

а не
...  bname       cname
...  aaa            yyy
...  bbb            xxx
?

У   вас  нет уникальной связи между  Таблицей Б и Ц


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Fantaz1
Дата 6.11.2011, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Такое задание... значит выход должен быть, хоть какой то
PM MAIL   Вверх
chip_and_dayl
Дата 6.11.2011, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

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



Так а где собственно задание?

И в задание была описана структура таблиц?


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Fantaz1
Дата 6.11.2011, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Задание это прикрепленный файл! Там структура трех таблиц, и результат который должен получится. Надо создать запрос который даст тот результат
PM MAIL   Вверх
Zloxa
Дата 7.11.2011, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


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

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



Цитата(Fantaz1 @  6.11.2011,  12:33 Найти цитируемый пост)
хоть какой то 

Код

SQL> -- эмуляция исходных данных
SQL> with tableA as (
  2    select 1 code, 'Cat'aname from dual
  3    union all select 2 code, 'Dog'aname from dual
  4    union all select 3 code, 'Bird'aname from dual
  5  )
  6  ,tableB as(
  7    select 1 code, 'aaa' bname from dual
  8    union all select 1, 'bbb' from dual
  9    union all select 2, 'ccc' from dual
 10    union all select 2, 'ddd' from dual
 11  )
 12  ,tablec as(
 13    select 1 code, 'xxx' cname from dual
 14    union all select 1, 'yyy' from dual
 15    union all select 1, 'zzz' from dual
 16    union all select 2, 'www' from dual
 17  )
 18  -- запрос
 19  select a.code
 20         ,aname
 21         ,bname
 22         ,cname
 23  from (select row_number() over (partition by code order by bname) rn, b.* from tableB b) b
 24  full join (select row_number() over (partition by code order by cname) rn, c.* from tableC c) c on b.code = c.code and b.rn = c.rn
 25  right join tablea a on a.code = coalesce(b.code,c.code)
 26  ;
 
      CODE ANAME BNAME CNAME
---------- ----- ----- -----
         1 Cat   aaa   xxx
         1 Cat   bbb   yyy
         1 Cat         zzz
         2 Dog   ccc   www
         2 Dog   ddd   
         3 Bird        
 
6 rows selected
 


Это сообщение отредактировал(а) Zloxa - 7.11.2011, 09:59


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




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


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

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