Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.16;
Скачать: CL | DM;

Вниз

LEFT JOIN   Найти похожие ветки 

 
MsGuns ©   (2003-09-25 20:42) [0]

Есть запрос:

SELECT F.fdid, M.mname, M.mizm, F.fcost, F.fqtt, N.ndate, N.nnum,
NM.pmqtt+NM.pmbrakq as qnout, CAST (0 AS DECIMAL(15,2)) as qnrest
FROM inv_fct F, mtr M, nout_pm NM, nout_pn NN, nout_p NP, nout N
WHERE (M.mid=F.mid) and (F.iid=:piid) and (NM.fdid=F.fdid)
and (NM.npnid=NN.npnid) and (NN.npid=NP.npid)
and (NP.nid=N.nid)
ORDER BY mname, fdid, ndate, nnum


inv_fct - фактура прихода
mtr - справочник материалов
nout - отгрузка (заголовки)
nout_p - состав огружаемых изделий
nout_pn - расклад материала на ед.изделия
nout_pm - фактический расход материала в отгрузке

Запрос имеет один недостаток - не выводит те материалы прихода, по которым не было отгрузок, а НАДО !!!
Ну вот не умею я еще пользоваться JOIN`ами ;`<... Все мои потуги с этим запросом пока ни к чему не привели.

Мужики, переделайте эту байду на джоин. Офигенно виртуально проставлюсь


 
Sergey_Masloff   (2003-09-25 22:15) [1]

SELECT F.fdid, M.mname, M.mizm, F.fcost, F.fqtt, N.ndate, N.nnum,
NM.pmqtt+NM.pmbrakq as qnout, CAST (0 AS DECIMAL(15,2)) as qnrest
FROM
((((inv_fct F left join mtr M on M.mid=F.mid)
left join nout_pm NM on NM.fdid=F.fdid)
left join nout_pn NN on NM.npnid=NN.npnid)
left join nout_p NP on NP.npid=NN.npid)
left join nout N on N.nid = NP.nid
WHERE F.iid=:piid
ORDER BY mname, fdid, ndate, nnum

Серег, я не вникая втупую переписал но что-то в этом роде. Когда ты пишешь and (NP.nid=N.nid) это у тебя получается закрытый джойн то есть берутся записи из левой таблицы и к ним присобачиваются по строгому соответствию из правой. Если left join то попадают и записи из левой таблицы которым нет соответствия в правой (NULL то есть). Но открытый джойн операция ИМХО накладная так что где строгое соответствие ты лучше лефт на иннер замени. И еще - в интербазе по умолчанию джойн открытый вроде то есть лефт джойн это тоже что left outer join так вот я всегда пишу в полной форме потому что работаю не только и не столько с ИБ а в других серверах оно бывает по другому. Может будет полезно.
P.S. Если что я не так написал скажи посмотрю повнимательнее. Но вроде все так?


 
Sergey_Masloff   (2003-09-25 22:22) [2]

MsGuns ©
еще замечание. В ордер бай тоже алиасы напиши, вроде как-то наступал я на грабли что не работало так как у тебя без алиасов хотя имена полей не дублировались в соединяемых таблицах.
И еще условие where можно тоже в условие джойн вписать
inv_fct F left join mtr M on (M.mid=F.mid) and (F.iid=:piid)
но я так не очень люблю...


 
Johnmen ©   (2003-09-26 09:47) [3]

SELECT F.fdid, M.mname, M.mizm, F.fcost, F.fqtt, N.ndate, N.nnum,
NM.pmqtt+NM.pmbrakq as qnout, CAST (0 AS DECIMAL(15,2)) as qnrest
FROM inv_fct F, mtr M, nout_pm NM, nout_pn NN, nout_p NP
LEFT JOIN nout N ON NP.nid=N.nid
WHERE (M.mid=F.mid) and (F.iid=:piid) and (NM.fdid=F.fdid)
and (NM.npnid=NN.npnid) and (NN.npid=NP.npid)
ORDER BY mname, fdid, ndate, nnum


 
MsGuns ©   (2003-09-26 13:26) [4]

>Sergey_Masloff (25.09.03 22:22) [2]
Все сработало ! Правда, детально еще не проверил (не пересчитал на калькуляторе, блин), но, похоже, что все O`k
С алиасами я в курсах, просто иногда не указываю, но знаю, что надо, хотя бы для читабельности.
Про схему увязки "соединенных" источников в запросах я прочитал несколько статей, не говоря уж о хэлпах, но все такими убогими примерами ;((. Твой запрос очень поучительный ;))

>Johnmen © (26.09.03 09:47) [3]
Твой запрос, ИМХО, текстуально ближе к оригиналу, хотя и не читается так легко, как у Сергея. Тоже дал положительный результат ;))

Ребятки, спасибо огроменное. Выставляюсь:

---------
( )
( )
( )
( )
( )
( )
/ \
/_____\


 
MsGuns ©   (2003-09-26 13:40) [5]

Блин, перекосо....ло все ! Ну бум считать, что оно аж выливается, а что она как бы лопается от кол-ва налитого ;)))



Страницы: 1 вся ветка

Текущий архив: 2003.10.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
9-51048
Арм
2003-04-15 03:57
2003.10.16
Беда с текстурами в OpeGL


1-51242
Max_
2003-10-03 15:23
2003.10.16
RichEdit и позиция курсора?


1-51176
Delphin
2003-10-04 22:12
2003.10.16
Нужен компонент для работы со скинами, или как округлить углы в E


14-51458
Карлсон
2003-09-29 16:30
2003.10.16
я фигею, дорогая редакция!


9-51052
Kulakov
2003-03-16 15:33
2003.10.16
проблема с DelphiX