Страница 1 из 1

Вопрос по запросу в SQL

Добавлено: 04 мар 2010, 15:56
Ruslan_V
Добрый день. Задача состоит в том, чтобы выбрать все приходы от контрагентов с учетом счетов, субсчетов дебита/кредита. Написали запрос в 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
));

В чем тут загвоздка? Или подскажите, пожалуйста, как вообще решить такую задачу, никогда еще с проводками не работали.

Добавлено: 04 мар 2010, 16:28
edward_K
потому как spsopr, sporder никак не завязаны с oborot
а не проще ли их вообще убрать из запроса, а кол-во взять из oborot?

Добавлено: 04 мар 2010, 17:24
Иван
у тебя же у каждого документа может быть несколько проводок
и еще в запросе не мешало бы поставить условие у oborot.TBLOS[4] = номер аналитики МЦ

Добавлено: 04 мар 2010, 17:37
tolctiy
edward_K
потому как spsopr, sporder никак не завязаны с oborot
а не проще ли их вообще убрать из запроса, а кол-во взять из oborot?

Вопрос:
Как из таблици spstep вытянуть цену поставщика? Если не учитывать эти таблици: spsopr, sporder.

Добавлено: 04 мар 2010, 18:33
edward_K
1.в вашем запросе сего нет.
2.ну по крайней мере тогда нужно еще наложить условие spsopr.cmcusl == oborot.kauos[4] - но это вас не спасет, если будет несколько позиций с одной МЦ, хотя если они в oborot вдруг собьются, то все будет нормально. В идеале у вас в oborot должен быть точный признак, что это относится именно к этой позиции. Иначе дорога в программирование или значительное усложнение запроса(отсекание по синониму дубликатов, вложенный запрос или DSQL например). Для начала oborot.nrec выведите - поймете о чем речь.

Re: Вопрос по запросу в SQL

Добавлено: 04 мар 2010, 20:31
KATZ
Ruslan_V писал(а):Написали запрос в SQL, но почему-то выгружаются задвоенные записи
В вашем запросе нет фильтра по планам счетов. Может, эти задвоенные записи из разных ПС?

Добавлено: 05 мар 2010, 12:00
Masygreen
как это обычно делается ..
последовательно добавлеете в запрос таблицы .. и ограничения . и сразу увидите что у вас двоится
потом в селект выводите только ту таблицу которую добавили последней и смотрите чем записи отличаются.. вот

Добавлено: 09 мар 2010, 08:18
Maverick
Опишите конкретно, что хотите получить, попробую накидать запрос...