Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Pomogite sostavit' query ... / 10 сообщений из 10, страница 1 из 1
13.03.2001, 13:08
    #32002972
Gatis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pomogite sostavit' query ...
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.
...
Рейтинг: 0 / 0
13.03.2001, 13:35
    #32002973
Genady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pomogite sostavit' query ...
А почему не так?
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
...
Рейтинг: 0 / 0
13.03.2001, 13:54
    #32002974
Gatis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pomogite sostavit' query ...
Vot vtom to i djelo chto tam netu parent. Prosto nado postavitj dve toblici rjadom. Bez kokoj to svjazki.
Gatis.
...
Рейтинг: 0 / 0
13.03.2001, 14:13
    #32002976
dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pomogite sostavit' query ...
Так а принцип то сопоставления какой, или принципа тоже нет и сопоставлять надо наугад ?
)
...
Рейтинг: 0 / 0
13.03.2001, 14:25
    #32002977
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pomogite sostavit' query ...
Тогда, 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
...
Рейтинг: 0 / 0
13.03.2001, 14:45
    #32002979
Genady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pomogite sostavit' query ...
Честно говоря, я просто не понимаю смысла такого запроса.
Если сделать select * from table1, table2 получим декартово произведение этих табличек
Такой результат не устроит?
Если нет, тогда разве что через временный таблички, хотя в Вашем примере George 26 NULL NULL, поэтому я подозреваю, что пирнцип объединения все же есть. Посмотрите схему данных, вероятнее всего Вы не правильно задали условие, опишите задачу подробнее.
...
Рейтинг: 0 / 0
13.03.2001, 16:15
    #32002987
Slawa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pomogite sostavit' query ...
Может быть и очень некрасиво, но нужный результат достигается, ради спортивного интереса буду очень признателен, если кто-то покожет как это можно сделать без курсоров и цикла.

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
...
Рейтинг: 0 / 0
13.03.2001, 16:37
    #32002990
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pomogite sostavit' query ...
2 Slawa
Ради спортивного интереса посмотрите что написал Glory двумя часами раньше Вас

Всё что Вы написали у него уместилось в 4 строки
...
Рейтинг: 0 / 0
14.03.2001, 10:00
    #32003012
Slawa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pomogite sostavit' query ...
2SergSuper
Согласен что там было намного красивее, но вопрос ставился так, чтоб при этом не учавствовали дополнительные столбцы идентификаторы

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

В моём примере это соблюдено, хотя ещё раз подчеркиваю очень некрасиво и я не рекомендовал бы никому работать таким образом.
...
Рейтинг: 0 / 0
14.03.2001, 10:41
    #32003016
dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pomogite sostavit' query ...
Не надо спекулировать словами. Там было сказано, что их нет в исходных таблицах, а как организовывать временные - это дело программиста.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Pomogite sostavit' query ... / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]