#sql
#sql
Вопрос:
У меня есть эти 3 запроса
SELECT a.name
FROM customer1 a, customer2 b
WHERE a.id = b.id
SELECT c.code
FROM segment1 c, orders e, country d, customer1 a
WHERE a.code_1 = b.code_2
AND c.segment1 = e.orders
AND c.segment1_id = 6
SELECT add.box, addr.address1, addr.address2
from customer1 a, infos addr, actions ac
WHERE a.account_id = addr.account_id
AND ac.deletion_status = 'N'
Я хочу объединить результаты этих 3 запросов в одну итоговую таблицу.
Если я сделаю что-то подобное:
SELECT a.name, c.code, addr.box, addr.address1, addr.address2
FROM customer1 a, customer2 b, segment1 c, orders e, country d, infos addr, actions ac
WHERE a.id = b.id
AND a.code_1 = b.code_2
AND c.segment1 = e.orders
AND c.segment1_id = 6
AND ac.deletion_status = 'N'
Эффективно ли это? Вы рекомендуете что-то еще?
Комментарии:
1. Нет, это не сработает. Посмотрите
union
.2. Не копируйте данные между таблицами, вместо этого создайте представление.
3. Совет сегодняшнего дня: всегда используйте современный, явный
JOIN
синтаксис! Проще писать (без ошибок), легче читать и поддерживать, и при необходимости легче преобразовать во внешнее соединение.4. @jarlh не могли бы вы привести мне пример?
5. Возвращает ли он результат, который вы ожидаете? Если да, то все в порядке. (Но вам действительно следует переключиться на современный, явный синтаксис соединения.)
Ответ №1:
Если вы спросите меня, напишите хранимую процедуру, получите параметры, сначала приведите таблицы, которые вы будете использовать, а затем присоедините эти результаты к другим таблицам в хранимой процедуре, я думаю, что это самый эффективный метод.Если вы хотите, я могу привести вам пример. CREATE PROCEDURE [dbo].[SP_MyProcedure] @CustomerId int AS BEGIN Declare @CustomerName nvarchar(50) Set @CustomerName=(SELECT Top 1 a.name FROM customer1 a, customer2 b WHERE a.id = b.id and a.id=@CustomerId)SELECT c.code FROM segment1 c, orders e, country d, customer1 a WHERE a.code_1 = b.code_2 AND c.segment1 = e.orders AND c.segment1_id = 6 and a.name=@CustomerName END
Я написал этот пример для вашего понимания, номера таблиц и параметры могут увеличиться.
Комментарии:
1. Большое спасибо за ваш быстрый ответ. Не могли бы вы привести мне пример, потому что я не очень хорошо знаком с sql. Заранее спасибо