Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.05.2015, 00:14   #1
SergioSS
 
Регистрация: 30.04.2015
Сообщений: 6
По умолчанию создание таблицы, которая является результатом запроса к двум другим таблицам

Здравствуйте, форумчане.
Подскажите пожалуйста: у меня есть две таблицы в MS SQL. Обращаюсь к ним на чтение из PHP посредством запроса. Каждая из таблиц содержит по 80 тыс. записей. В связи с этим вопрос:
1. Как в MS SQL через CREATE создать таблицу, которая является результатом запроса к двум таблицам ?
2. Увеличит ли это скорость обращения из PHP к одной таблице (а не к двум) через запрос ?
SergioSS вне форума Ответить с цитированием
Старый 01.05.2015, 00:47   #2
lomastr_
Форумчанин
 
Регистрация: 16.01.2015
Сообщений: 672
По умолчанию

не понятно, вы при каждом запросе собираетесь создавать таблицу? тогда скорость упадет
lomastr_ вне форума Ответить с цитированием
Старый 01.05.2015, 07:18   #3
SergioSS
 
Регистрация: 30.04.2015
Сообщений: 6
По умолчанию

Нет, таблицу я хочу создать в самом MS SQL один раз. Дело в том, что информация в базе данных условно статична и не предполагает изменения.

Может как то: создаю запрос, помещаю его во временную таблицу и обращаюсь к этой таблице при создании новой таблицы. Но вот бы маленький примерчик.

Последний раз редактировалось Аватар; 01.05.2015 в 07:55.
SergioSS вне форума Ответить с цитированием
Старый 01.05.2015, 07:55   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
SELECT ... INTO ... FROM ...
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.05.2015, 08:53   #5
SergioSS
 
Регистрация: 30.04.2015
Сообщений: 6
По умолчанию

А CREATE куда ?

У меня в MS SQL есть таблица А и таблица Б. Я хочу создать в среде MS SQL таблицу В, которая содержала бы в себе INNER JOIN таблицы А и таблицы Б. Как составить такой запрос ?

Последний раз редактировалось Stilet; 01.05.2015 в 20:42.
SergioSS вне форума Ответить с цитированием
Старый 01.05.2015, 10:43   #6
xxbesoxx
Участник клуба
 
Аватар для xxbesoxx
 
Регистрация: 10.08.2010
Сообщений: 1,392
По умолчанию

Цитата:
У меня в MS SQL есть таблица А и таблица Б
Код:
create database BDTest;
-----------------------------
create table a
(
 a_id int identity(1,1) primary key ,
 a_naimenovanie nvarchar(40)
);
-------------------------------
insert into a(a_naimenovanie) values(N'Чай'),
                                    (N'Чай')
select * from a
--------------------------------
create table b
(
 b_id int identity(1,1),
 b_proizvoditel nvarchar(40),
 b_aID int not null,
 constraint FK_b foreign key(b_aID) references a(a_id)
);
--------------------------------------
insert into b(b_proizvoditel, b_aID) values(N'Украинский',1),
                                           (N'Русский',2)
select * from b

-------------------------------------
Цитата:
которая содержала бы в себе INNER JOIN таблицы А и таблицы Б. Как составить такой запрос ?
Код:
select a.a_id, a.a_naimenovanie, b.b_proizvoditel
from a inner join b
on a.a_id=b.b_aID
order by 2 asc

Последний раз редактировалось xxbesoxx; 01.05.2015 в 12:24.
xxbesoxx вне форума Ответить с цитированием
Старый 01.05.2015, 11:57   #7
lomastr_
Форумчанин
 
Регистрация: 16.01.2015
Сообщений: 672
По умолчанию

Цитата:
помещаю его во временную таблицу и обращаюсь к этой таблице при создании новой таблицы
вы сами понимаете что тут написали?

создать, заполнить, перенести и т.д. это все мелочь, не стоящая

Цитата:
У меня в MS SQL есть таблица А и таблица Б. Я хочу создать в среде MS SQL таблицу В, которая содержала бы в себе INNER JOIN таблицы А и таблицы Б. Как составить такой запрос ?
это все понятно было сразу, не понятно в какой момент данные будут попадать в эту 3 таблицу? если при каждом обновлении первых, то зачем тогда они нужны
lomastr_ вне форума Ответить с цитированием
Старый 01.05.2015, 19:19   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

скорее уж если нужна таблица состоящаа чисто из результат других, я бы советовал создать представление(VIEW)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.05.2015, 19:29   #9
xxbesoxx
Участник клуба
 
Аватар для xxbesoxx
 
Регистрация: 10.08.2010
Сообщений: 1,392
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
скорее уж если нужна таблица состоящаа чисто из результат других, я бы советовал создать представление(VIEW)
Да можно (VIEW) .... Можно еще (Пользовательские функции, которые возвращают таблицу)
Код:
CREATE FUNCTION dbo.Name_Function()
RETURNS TABLE  
AS
     RETURN (select a.a_id, a.a_naimenovanie, b.b_proizvoditel
             from a inner join b
             on a.a_id=b.b_aID);
GO
и вызват его на выполнение
Код:
select * from Name_Function()
xxbesoxx вне форума Ответить с цитированием
Старый 06.05.2015, 22:38   #10
SergioSS
 
Регистрация: 30.04.2015
Сообщений: 6
По умолчанию

большое спасибо всем за советы. Буду применять.
SergioSS вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск по двум таблицам Pamparam SQL, базы данных 3 06.07.2013 01:30
Запрос по двум таблицам Alina111 SQL, базы данных 2 11.01.2013 20:20
Проблемка с результатом запроса в БД artemavd БД в Delphi 25 15.06.2009 17:12
перемещение по двум таблицам Alexi Общие вопросы Delphi 5 04.06.2009 13:30