Hello, All!

Хотелось поиграться и сравнить

Попробовал сделать аналог обычного inner join / left join (на этих таблицах
разницы нет (not null, unique))

select v.* from dic_attr_values v,  ( select title from dic_attr a  where
a.id = v.id_a) as a2(title)
 -> error:  unknown column v.id_a
Понял, если бы было unknown table v, но...

Значит так нельзя. Жаль...



Попробуем через гланды:

=========Beginning of the citation==============
select distinct v2.*, a2.* from  dic_attr_values v2,
( select a.title, v.id_a from dic_attr a, dic_attr_values v  where a.id =
v.id_a)
  as a2(title, id_a) where v2.id_a = a2.id_a
=========The end of the citation================

Результат такой же как нормальный join, но чтения зашкалили



=========Beginning of the citation==============
select distinct v2.*, a2.* from  dic_attr_values v2,
( select a.title, v.id_a, v.id_v from dic_attr a, dic_attr_values v  where
a.id = v.id_a)
  as a2(title, id_a, id_v) where v2.id_a = a2.id_a and v2.id_v = a2.id_v
=========The end of the citation================

Меньше чтений ,но все равно многовато.

=========Beginning of the citation==============
Адаптированный план
PLAN SORT (JOIN (A2 A NATURAL, A2 V INDEX (FK_DIC_ATTR_VALUES), V2 INDEX
(PK_DIC_ATTR_VALUES)))
=========The end of the citation================

зачем два раза по A2 бежать ?




Таблички - 5 строк и 5x5 строк, останки от старой попытки решить задачу
Эйнштейна еще на demo.ru :-)

=========Beginning of the citation==============
CREATE TABLE DIC_ATTR (
    ID     T_ID, /* smallint*/
    TITLE  T_DESCR  /* какая-то небольшая строка */
);
ALTER TABLE DIC_ATTR ADD CONSTRAINT PK_DIC_ATTR PRIMARY KEY (ID);


CREATE TABLE DIC_ATTR_VALUES (
    ID_A   T_ID,
    ID_V   T_ID,
    TITLE  T_DESCR
);


ALTER TABLE DIC_ATTR_VALUES ADD CONSTRAINT PK_DIC_ATTR_VALUES PRIMARY KEY
(ID_A, ID_V);

ALTER TABLE DIC_ATTR_VALUES ADD CONSTRAINT FK_DIC_ATTR_VALUES FOREIGN KEY
(ID_A) REFERENCES DIC_ATTR (ID);

=========The end of the citation================


FB2 rc2
После заявлений о поддержке derived tables в release notes, думал что такие
вырожденные примеры Firebird отщелкает.
Или это я в 4 часа ночи выродился и нифига не понимаю?
-- 
WinAMP://none: WinAMP is suffocated
http://Arioch.nm.ru/FL/Fidolook_SL.png
Mail: the)under(Arioch)at(nm)dot(ru   ICQ: xmpp:[EMAIL PROTECTED]



--~--~---------~--~----~------------~-------~--~----~
-~----------~----~----~----~------~----~------~--~---

Ответить