Форум: "Базы";
Текущий архив: 2003.01.02;
Скачать: [xml.tar.bz2];
ВнизМожно ли SQL-м соединить такие 2 таблицы. Найти похожие ветки
← →
LynxSS (2002-12-11 16:39) [0]Доброе время суток! Может кто подскажет. Есть така проблемка: Есть 2 таблицы(например): Таб.1: kod ; Name
Таб.2: kod ; par ; Value
В одной списки компьютеров. Во второй ихние характеристики. Например: par=0 - Value="111.111.111.111" - IpAdres
par=2 - Value="Duron 750" - procecor
par=3 - Value="Sony 15"" - monitor
...
Можно ли SQL кодом связять эти таблицы, чтобы значения (Value) развернуть в поля:
kod , Name , IpAdres , Procecor , Monitor , ...
← →
sniknik (2002-12-11 16:48) [1]посмотри join в хелпе той базы которой пользуешся (подозреваю Local SQL :-), самое оно я думаю. примеры там тоже должны быть.
← →
Roki (2002-12-11 16:49) [2]select tab1.kod , tab2.*
from tab1, tab2
where tab1.kod=tab2.kod
← →
FreeLancer (2002-12-11 17:03) [3]
> Можно ли SQL кодом связять эти таблицы, чтобы значения (Value)
> развернуть в поля:
> kod , Name , IpAdres , Procecor , Monitor , ...
Можно. Вложенным запросом.
← →
Prooksius (2002-12-11 17:34) [4]А где хранятся названия параметров (слова "Processor", "Monitor"...)
Количество этих параметров одинаково для всех компов?
← →
LynxSS (2002-12-11 17:44) [5]для "Prooksius" названия этих праметров хранятся в другой базе,
где идет связь по par. Это в принципе неважно. Главное "Мне нужен пример SQL-кода". Плиз если кто сможет набрасайте.
← →
Prooksius (2002-12-11 17:54) [6]Можно примерно так.
select T1.Name, T21.Value IPAddr, T22.Value Processor, ... (перебрать все возможные параметры)
from
Table1 T1
left join Table2 T21 on T21.Kod = T1.Kod and T21.ParamName = "IPValue"
left join Table2 T21 on T21.Kod = T1.Kod and T21.ParamName = "Processor"
...
← →
LynxSS (2002-12-11 18:47) [7]С вложенными запросами розабрался. Но SQL не понимает
ParamName. Как его по другому заставить записать именно в поля:
IPAddr в T21.Value as IPAddr
Processor в T22.Value as Processor
← →
LynxSS (2002-12-11 19:06) [8]Получилось
Разобрался!!!!!!!!!!!!!!
если кто еще столкнулся с такой проблемой пишу результат:
select a.Name, b."Value" as IPAddr, c."Value" as Processor,
d."value" as monitor
from TAB1 a
left join TAB2 b on a.Kod = b.Kod and b.par = 0
left join TAB2 c on a.Kod = c.Kod and c.par = 2
left join TAB2 d on a.Kod = d.Kod and d.par = 3
← →
Prooksius (2002-12-11 19:48) [9]Вообще-то это хороший пример хранения в базе произвольного кол-ва параметров.
Единственное, при большом кол-ве компов и параметров запрос будет жутко тормозить.
← →
sniknik (2002-12-11 20:04) [10]select a.Name, b."Value" as IPAddr, c."Value" as Processor, d."value" as monitor
from TAB1 a
left join TAB2 b on a.Kod = b.Kod
WHERE b.par IN (0, 2, 3, ...)
так не лутше будет?
или если не сработает
select a.Name, b."Value" as IPAddr, c."Value" as Processor, d."value" as monitor
from TAB1 a, TAB2 b
WHERE (a.Kod = b.Kod) AND (b.par IN (0, 2, 3, ...))
← →
Prooksius (2002-12-11 20:15) [11]2 sniknik © (11.12.02 20:04)
Ты нигде в запросе не описал, что у тебя за таблицы c и d.
← →
sniknik (2002-12-11 22:24) [12]join TAB2 c, join TAB2 d - какая разница?
и так кучу хелпа сюда переписали.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.01.02;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c