![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите найти ошибка - кроме головы? =) [D6, Access]
Владий © (2004-03-02 11:12:00)Есть следующий код:
SELECT Payments.*, LastCoursEUR.Cours*Payments.Sum AS SumPlanRub, Polices.*
FROM Polices INNER JOIN (LastCoursEUR INNER JOIN Payments ON LastCoursEUR.Val=Payments.Val) ON Polices.P_Num=Payments.Police
WHERE ((Payments.Val)='EUR') And (Payments.Payed =0) And (Payments.Date<Now())
Union
SELECT Payments.*, LastCoursUSD.Cours*Payments.Sum AS SumPlanRub, Polices.*
FROM Polices INNER JOIN (LastCoursUSD INNER JOIN Payments ON LastCoursUSD.Val=Payments.Val) ON Polices.P_Num=Payments.Police
WHERE ((Payments.Val)='EUR') And (Payments.Payed =0) And (Payments.Date<Now())
UNION
SELECT Payments.*, Payments.Sum AS SumPlanRub, Polices.*
FROM Polices INNER JOIN Payments ON Polices.P_Num=Payments.Police
WHERE ((Payments.Val)='EUR') And (Payments.Payed =0) And (Payments.Date<Now());
Не работает, зараза... Причем, подозреваю, что из-за
"(Payments.Date<Now())" - такие записи точно есть, хотя может в написании ошибся? Но на ошибки ругани нет...
Хорошей Удачи!
Владий // ICQ: 47659886
Владий (2004-03-02 11:56:00) [1]Спасибо за ответы - не нашел что приводило к пустой выборке - но заработало... видимо опять где-то пробел пропустил...
sniknik (2004-03-02 11:54:00) [2]Reindeer Moss Eater © (02.03.04 11:47) [6]
вместе с джойнами 5 AND.
Reindeer Moss Eater (2004-03-02 11:47:00) [3]В каждом из запросов 3 условия по AND
Последовательно убираем по одному и начинаем видеть какое именно приводит к пустой выборке.
sniknik (2004-03-02 11:43:00) [4]Johnmen © (02.03.04 11:28) [4]
а так в access работать не будет (join не вложенный, он не понимает), тогда уж лутше просто в условии равенство указать (неявный джойн сделать)
Johnmen (2004-03-02 11:28:00) [5]А так ?
SELECT Payments.*, LastCoursEUR.Cours*Payments.Sum AS SumPlanRub, Polices.*
FROM Payments
JOIN Polices ON Polices.P_Num=Payments.Police
JOIN LastCoursEUR ON LastCoursEUR.Val=Payments.Val
WHERE (Payments.Val='EUR') And (Payments.Payed =0) And (Payments.Date<Now())
UNION
SELECT Payments.*, LastCoursUSD.Cours*Payments.Sum AS SumPlanRub, Polices.*
FROM Payments
JOIN Polices ON Polices.P_Num=Payments.Police
JOIN LastCoursUSD ON LastCoursUSD.Val=Payments.Val
WHERE (Payments.Val='EUR') And (Payments.Payed =0) And (Payments.Date<Now())
UNION
SELECT Payments.*, Payments.Sum AS SumPlanRub, Polices.*
FROM Payments
JOIN Polices ON Polices.P_Num=Payments.Police
WHERE (Payments.Val='EUR') And (Payments.Payed =0) And (Payments.Date<Now())
Владий (2004-03-02 11:23:00) [6]Есть, в том-то и дело... 100% есть запись от 29.01.2004, сегодня - 02.03.04 => должно быть, а нету...
Хорошей Удачи!
Владий // ICQ: 47659886
sniknik (2004-03-02 11:23:00) [7]> такие записи точно есть
в одной таблице может быть, но в сумме условие не сходится, их (условий) у тебя довольно много, двойное обьеденение, тем более с INNER, что значит если хоть по одной таблице подходяших записей нет то нет их и в общем.
а Now правильно.
Reindeer Moss Eater (2004-03-02 11:17:00) [8]Надо верить движку.
Нет записей в выборке - значит нет их.