2010-06-29 3 views
2

Мне было интересно, могут ли эти два запроса быть объединены в один запрос?SQL Script Help, объединить два запроса в один

Запрос 1: чтобы получить @guidID быть подключен к Query 2:

DECLARE @guidID uniqueIdentifier 
    SET @guidID = (SELECT guidID FROM dbo.table1 WHERE IntID = 1) 

Запрос 2: извлекает комбинированный таблицу из функции и table1

SELECT o.guidID, IntID, Title, func.Name 
    FROM dbo.table1 o 
INNER JOIN dbo.func1(o.guidID) func ON func.guidID = o.guidID 
WHERE IntID = 1 

func1 принимает в guidID объект Возвращает таблицу (guidID, IntID

Спасибо за любую помощь, это насколько я получил, которые дают мне данные, которые мне нужны, но в двух отдельных qu тальные.

ответ

2

SQL Server 2005+ имеет CROSS ОТНОСИТЬСЯ

SELECT t.guidID, IntID, Title, func.Name 
    FROM 
    dbo.table1 o 
    CROSS APPLY 
    dbo.func1(o.guidID) func 
WHERE IntID = 1 

Edit: не будет работать ... Однако, если у вас есть одна строка для IntID = 1, вы можете переходить присоединиться к другим СУБД/старые SQL серверы

SELECT t.guidID, IntID, Title, func.Name 
    FROM 
    dbo.table1 o 
    CROSS JOIN 
    dbo.func1(o.guidID) func 
WHERE IntID = 1 

+0

Я получаю сообщение об ошибке: " '' Неправильный синтаксис около". для (o.guidID) в строке 5. Любые предложения? Я изучал его, но, похоже, не могу решить эту проблему. – Brett

+0

ах. Вы находитесь на SQL Server 2000 или у вас уровень совместимости db на уровне 80 (или ниже). Используйте вторую форму, которую я дал, пожалуйста, – gbn

+0

Я на SQL Server 2008, и я не уверен, что уровень совместимости db, так как googling не сказал мне слишком много. Но я получаю ту же ошибку, когда пытаюсь запустить вторую форму. – Brett

Смежные вопросы