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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как объеденить две таблици в одну 
:(
    Опции темы
Valpeza
Дата 13.5.2011, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Есть две заполненные таблицы, имеющие практически эдентичную инфу в каждой записи, разными там являются только id частота назначения с количеством. И как вот их объеденить так чтобы можно было сравнивать эту частоту и количество, тоесть надо чтобы идентичные имена с id = 2 из первой таблици объеденялись с такими же записями но с id=4356 из второй, а частато и кол-во из обеих порождали 4 новых столбца, чтобы сравнивать можно было это ело.  Выглядит это вот так
Перва таблица
Код

CREATE TABLE sde_commons
    (id                             NUMBER(10,0),
    parent_id                      NUMBER(10,0),
    internal_id                    NUMBER(10,0),
    seq                            NUMBER(3,0),
    code                           VARCHAR2(200),
    name                           VARCHAR2(500),
    rate                           NUMBER,
    qnt                            NUMBER,
    unit                           VARCHAR2(20))


вторая

Код

CREATE TABLE std_commons
    (id                             NUMBER(10,0) NOT NULL,
    parent_id                      NUMBER(10,0) NOT NULL,
    internal_id                    NUMBER(10,0),
    seq                            NUMBER(3,0),
    code                           VARCHAR2(200),
    name                           VARCHAR2(500),
    rate                           NUMBER,
    qnt                            NUMBER,
    unit                           VARCHAR2(20))


и та в коотрую данные из первых двух вставить надо
Код


CREATE TABLE sde_as
    (id                             NUMBER(10,0),
    sde_parent_id                  NUMBER(10,0),
    std_parent_id                  NUMBER(10,0),
    seq                            NUMBER(3,0),
    sde_code                       VARCHAR2(200),
    std_code                       VARCHAR2(200),
    name                           VARCHAR2(500),
    sde_rate                       NUMBER(5,4),
    std_rate                       NUMBER(5,4),
    sde_qnt                        NUMBER(5,4),
    std_qnt                        NUMBER(5,4))


Уважаемые специаличты помогите с этим запросом, очень нужен он мне

Это сообщение отредактировал(а) Valpeza - 13.5.2011, 17:55
PM MAIL   Вверх
Valpeza
Дата 13.5.2011, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



хотябы в коком направлении рыть подскажите а, какая там конструкция запроса используется, команда какая-то специальная есть наверняка.... 

Это сообщение отредактировал(а) Valpeza - 13.5.2011, 19:48
PM MAIL   Вверх
Valpeza
Дата 13.5.2011, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Через этот запрос 
Код

 SELECT std_commons.code,name, rate, qnt,parent_id FROM std_commons     
        WHERE parent_id=4359 
         UNION
SELECT sde_commons.code,name, rate,qnt,  parent_id FROM sde_commons where parent_id=2; 


 он мне одинаковые записи выводит друг под другом,
A01.10.001    диагноз1    1                                      15                                     4359
A01.10.001    диагноз1                                                                                  2
A01.10.002    диагноз 2    1                                      15                                     4359
A01.10.002    диагноз 2                                                                                  2

 сравнивать можно, но не удобно.  А надо чтобы он мне код и имя объеденял, а вот частоту, среднее количество и id номера в отдельных столбцах писал, как бы в одну строчку...
вот как это реализовать?

Это сообщение отредактировал(а) Valpeza - 13.5.2011, 20:11
PM MAIL   Вверх
boevik
Дата 13.5.2011, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

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



INNER JOIN
связка по имени выглядит так:
Код

select * from std_commons a inner join sde_as b on a.name = b.name



--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
Valpeza
Дата 13.5.2011, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



о, спасибо, попробую поколдовать с этим)
PM MAIL   Вверх
Valpeza
Дата 13.5.2011, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



По средствам этого запроса в принципе получилось именно то что мне надо, но не до конца

Код

 select * from sde_commons a inner join std_commons b on a.name = b.name where a.parent_id=2 and b.parent_id=4359



сейчас получилось две таблицы целеко объеденить, и в каждой строке соответствуют имена и коды из обеих таблиц.  А как сделать ее менее громоздкой, тобишь сгруппировать имена в и коды в каждой строке в одно, а остальные данные оставить как есть.  мне их потом надо будет в таблицу sde_as вставлять. 
PM MAIL   Вверх
Valpeza
Дата 14.5.2011, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Огромное спасибо, разобрался, на первом наборе таблиц получилось вывести интересующие данные.

Посмотрите пожалуйста вот такую еще ситуацию, есть еще две таблицы, он как и те подобны, вот скрин с оной http://s2.ipicture.ru/uploads/20110514/g6aW66px.jpg  Как вы видите тут некая иерархия получается в медикаментах. Если я пытаюсь объеденить эти две таблицы по средствам вот такого запроса
Код

select  a.parent_id,  b.parent_id , 
        a.pharm_group, 
        a.atx , a.mnn,
        a.rate st_rate, b.rate sd_rate 
                from std_drugs a 
    inner join sde_drugs b  on a.pharm_group = b.pharm_group and b.atx=a.atx and b.mnn=a.mnn
                             where b.parent_id=3 and a.parent_id=4361;


то получаю в ответ пустые колонки
если вводить такой запрос
Код

select  a.parent_id,  b.parent_id , 
        a.pharm_group, 
        a.atx , a.mnn,
        a.rate st_rate, b.rate sd_rate 
                from std_drugs a 
    inner join sde_drugs b  on a.pharm_group = b.pharm_group 
                             where b.parent_id=3 and a.parent_id=4361;

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


 




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


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

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