Вопрос по запросу в SQL
Модераторы: m0p3e, edward_K, Модераторы
Вопрос по запросу в SQL
Добрый день. Задача состоит в том, чтобы выбрать все приходы от контрагентов с учетом счетов, субсчетов дебита/кредита. Написали запрос в SQL, но почему-то выгружаются задвоенные записи:
select oborot.dbscheto, oborot.krschetk, katmc.name, katmc.cenamc, katsopr.nsopr, sporder.kol
from oborot, katmc, katsopr, sporder, soprhoz, spsopr
where ((Date(2,3,2010)==katsopr.dopr and
katsopr.nrec==spsopr.csopr and
spsopr.nrec==sporder.cspsopr and
word(101)==soprhoz.tidkgal and
katsopr.nrec==soprhoz.csoprdoc and
soprhoz.nrec==oborot.csoprhoz and
oborot.kauos[4]==katmc.nrec
));
В чем тут загвоздка? Или подскажите, пожалуйста, как вообще решить такую задачу, никогда еще с проводками не работали.
select oborot.dbscheto, oborot.krschetk, katmc.name, katmc.cenamc, katsopr.nsopr, sporder.kol
from oborot, katmc, katsopr, sporder, soprhoz, spsopr
where ((Date(2,3,2010)==katsopr.dopr and
katsopr.nrec==spsopr.csopr and
spsopr.nrec==sporder.cspsopr and
word(101)==soprhoz.tidkgal and
katsopr.nrec==soprhoz.csoprdoc and
soprhoz.nrec==oborot.csoprhoz and
oborot.kauos[4]==katmc.nrec
));
В чем тут загвоздка? Или подскажите, пожалуйста, как вообще решить такую задачу, никогда еще с проводками не работали.
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
1.в вашем запросе сего нет.
2.ну по крайней мере тогда нужно еще наложить условие spsopr.cmcusl == oborot.kauos[4] - но это вас не спасет, если будет несколько позиций с одной МЦ, хотя если они в oborot вдруг собьются, то все будет нормально. В идеале у вас в oborot должен быть точный признак, что это относится именно к этой позиции. Иначе дорога в программирование или значительное усложнение запроса(отсекание по синониму дубликатов, вложенный запрос или DSQL например). Для начала oborot.nrec выведите - поймете о чем речь.
2.ну по крайней мере тогда нужно еще наложить условие spsopr.cmcusl == oborot.kauos[4] - но это вас не спасет, если будет несколько позиций с одной МЦ, хотя если они в oborot вдруг собьются, то все будет нормально. В идеале у вас в oborot должен быть точный признак, что это относится именно к этой позиции. Иначе дорога в программирование или значительное усложнение запроса(отсекание по синониму дубликатов, вложенный запрос или DSQL например). Для начала oborot.nrec выведите - поймете о чем речь.
Последний раз редактировалось edward_K 04 мар 2010, 21:03, всего редактировалось 1 раз.
Re: Вопрос по запросу в SQL
В вашем запросе нет фильтра по планам счетов. Может, эти задвоенные записи из разных ПС?Ruslan_V писал(а):Написали запрос в SQL, но почему-то выгружаются задвоенные записи