Pomogite sostavit' query ...

Gatis
Дата: 13.03.2001 13:08:41
Pomogite sostavit' query ... Est 2 tablichki
Name | Value
------------
Ann | 9
Bil | 21
John | 4
George| 26


Animal | Color
--------------
Cat | White
Dog | Black
Cow | Brown

Result set needed:
Name | Value | Animal | Color
-------------------------------
Ann | 9 | Cat | White
Bil | 21 | Dog | Black
John | 4 | Cow | Brown
George | 26 | NULL | NULL

PLEASE HELP!
Its all because In Delphi 5.0 QuickReport I can`t place two detail bands!
If it is possible, please help me.
Genady
Дата: 13.03.2001 13:35:13
А почему не так?
Ann 9 Dog Black
Bill 21 Cow Brown
John 4 Cat White
George 26 Dog Black

Как эти таблицы относятся друг к другу? Кто из них parent?
Если предположить, что первая таблица парент и есть внешний ключ, например ID , тогда запрос будет выглядеть так:

select table1.Name, table1.Value, table2.Animal, table2.Color from table1
left join table2 on table1.ID = table2.ID
Gatis
Дата: 13.03.2001 13:54:03
Vot vtom to i djelo chto tam netu parent. Prosto nado postavitj dve toblici rjadom. Bez kokoj to svjazki.
Gatis.
Dmitry
Дата: 13.03.2001 14:13:18
Так а принцип то сопоставления какой, или принципа тоже нет и сопоставлять надо наугад ? )
Glory
Дата: 13.03.2001 14:25:33
Тогда, IMHO одним запросом обойтись нельзя. Если нет отношений, оо надо их создать.
Если просто нужно связать 1-ю запись с 1-ой, 2-ю со 2-ой и т.д., то предложу такой вариант

CREATE TABLE #Temp1 (ID Identity(1,1), Name varchar(10), Value int)
CREATE TABLE #Temp2 (ID Identity(1,1), Animal varchar(10), Color varchar(10))


SELECT IDENTITY(int, 1,1) AS ID, Name, Value INTO #Temp1 FROM Table1
SELECT IDENTITY(int, 1,1) AS ID, Animal, Color INTO #Temp2 FROM Table2

-- теперь можно испльзовать запрос, который предложил Genady
select #temp1.Name, #temp1.Value, #temp2.Animal, #temp2.Color from #temp1
left join #temp2 on #temp1.ID = #temp2.ID
Genady
Дата: 13.03.2001 14:45:28
Честно говоря, я просто не понимаю смысла такого запроса.
Если сделать select * from table1, table2 получим декартово произведение этих табличек
Такой результат не устроит?
Если нет, тогда разве что через временный таблички, хотя в Вашем примере George 26 NULL NULL, поэтому я подозреваю, что пирнцип объединения все же есть. Посмотрите схему данных, вероятнее всего Вы не правильно задали условие, опишите задачу подробнее.
Slawa
Дата: 13.03.2001 16:15:14
Может быть и очень некрасиво, но нужный результат достигается, ради спортивного интереса буду очень признателен, если кто-то покожет как это можно сделать без курсоров и цикла.

DECLARE c1 cursor for SELECT * from table1
DECLARE c2 cursor for SELECT * from table2
DECLARE @name char(10),
@value int,
@Animal char(10),
@Color char(10),
@i int,
@j int,
@b bit

SELECT @i = COUNT(*) from table1
SELECT @j = COUNT(*) from table1
SET @b = 0

OPEN c1
OPEN c2
SET NOCOUNT ON
WHILE @i > 0 and @j > 0 BEGIN

SELECT @name = null, @value = null, @Animal = null, @Color = null

fetch c1 into @name,@value
fetch c2 into @Animal, @Color

IF @b = 0 BEGIN
select @name as [Name], @value as Value, @Animal as Animal, @Color as Color into #table3
SET @b = 1
END
ELSE
INSERT #table3([Name], Value, Animal, Color) VAlues(@name , @value , @Animal , @Color )

SET @i = @i - 1
SET @j = @j - 1
END

CLOSE c1
CLOSE c2
deallocate c1
deallocate c2
SET NOCOUNT OFF
select * from #table3
drop table #table3
SergSuper
Дата: 13.03.2001 16:37:23
2 Slawa
Ради спортивного интереса посмотрите что написал Glory двумя часами раньше Вас

Всё что Вы написали у него уместилось в 4 строки
Slawa
Дата: 14.03.2001 10:00:50
2SergSuper
Согласен что там было намного красивее, но вопрос ставился так, чтоб при этом не учавствовали дополнительные столбцы идентификаторы

Цитирую Gatis'a
>Vot vtom to i djelo chto tam netu parent. Prosto nado postavitj dve >toblici rjadom. Bez kokoj to svjazki.

В моём примере это соблюдено, хотя ещё раз подчеркиваю очень некрасиво и я не рекомендовал бы никому работать таким образом.
Dmitry
Дата: 14.03.2001 10:41:23
Не надо спекулировать словами. Там было сказано, что их нет в исходных таблицах, а как организовывать временные - это дело программиста.