Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

SQL Запрос [D7, access]


Страницы:   1 2

SPIRIT ©   (2004-02-04 10:29:00) 

Допустим есть таблица "сотрудники" (ID,fio,id_prof )
"профессии" (id, id_bloka, id_otdela)
У професии по любому существует блок а вот id_otdela может быть и null
"Блоки" (id,name)
"Отделы"(id,name)

нужно чтобы выбирались все записи в том числе и с пустым полем id_otdela
т.е. вот такой запрос не канает
select *
from table_sotr s,table_prof p,table_blok b,table_otdel o
where s.id_prof=p.kod,p.kod_bloka=b.kod,p.kod_otdela=o.kod


SPIRIT   (2004-02-04 14:39:00) [1]

у ACCESS, видать, свои стандарты.
Я тоже голову ломал сидел, а потом взял конструктором в акцесе создал запрос и посмотрел чё он там намутил ...


Johnmen   (2004-02-04 14:33:00) [2]

Вообще-то говоря, без всяких скобок запрос полностью соотвествует стандарту...


SPIRIT   (2004-02-04 14:20:00) [3]

все... дошло наконец-то
with query do
begin
active:=false;
sql.Clear;
sql.Add("select *");
sql.Add("from (((table_sotr s");
sql.Add("inner join table_prof p on p.kod = s.kod_prof )");
sql.Add("inner join table_blok b on b.kod = p.kod_bloka )");
sql.Add("left outer join table_otdel o on o.kod=p.kod_otdela )");
active:=true;
end;
dbgrid5.DataSource:=DS_query;


Johnmen   (2004-02-04 14:19:00) [4]

Давай так. После каждой правки текста запроса ты приводишь (если есть указанная ошибка) свой реальный код, как в [18].


SPIRIT   (2004-02-04 14:02:00) [5]

ну сообщение выдает об ошиьке там написано: ошибка синтаксиса (пропущен оператор)в выражении запроса "p.kod = s.kod_prof
inner join table_blok b on b.kod = p.kod_bloka
left outer join table_otdel o on o.kod = p.kod_otdela ""


Johnmen   (2004-02-04 13:56:00) [6]

>SPIRIT © (04.02.04 13:52)

Не понял...


SPIRIT   (2004-02-04 13:52:00) [7]

тоже самое причем ругаться начинает с p.kod=s.kod_prof
inner join table_blok и до конца


Johnmen   (2004-02-04 13:23:00) [8]

Попробуй добавить пробел перед концевой " в каждой строке...


SPIRIT   (2004-02-04 13:11:00) [9]

with query do
begin
active:=false;
sql.Clear;
sql.Add("select *");
sql.Add("from table_sotr s");
sql.Add("inner join table_prof p on p.kod = s.kod_prof");
sql.Add("inner join table_blok b on b.kod = p.kod_bloka");
sql.Add("left outer join table_otdel o on o.kod=p.kod_otdela");
active:=true;
end;
dbgrid5.DataSource:=DS_query;


Johnmen   (2004-02-04 13:04:00) [10]

Приводи код полностью...


SPIRIT   (2004-02-04 12:36:00) [11]

когда ADOQuery.active:=true вот так вот и пишет


Johnmen   (2004-02-04 12:32:00) [12]

>пишет: Пропущен оператор

Прям так и пишет ? И кто пишет ? И в какой момент ?


Sandman25   (2004-02-04 12:27:00) [13]

Значит, в Access другой синтаксис SQL. Изучайте его help.


SPIRIT   (2004-02-04 12:25:00) [14]


> Sandman25 © (04.02.04 12:20) [12]

да


Sandman25   (2004-02-04 12:20:00) [15]

SELECT S.*
FROM TABLE_SOTR S
JOIN TABLE_PROF P ON P.ID = S.ID_PROF
JOIN TABLE_BLOK B ON B.ID = P.ID_BLOKA
LEFT JOIN TABLE_OTDEL O ON O.ID = P.ID_OTDELA
А так? То же самое?


SPIRIT   (2004-02-04 12:15:00) [16]


> asp © (04.02.04 10:34) [1]
> Путаница выходит ID & KOD.


торопился, ID это и есть КОД ...


> А запрос:
> SELECT *
> FROM TABLE_SOTR S
> INNER JOIN TABLE_PROF P ON (P.ID = S.ID_PROF)
> INNER JOIN TABLE_BLOK B ON (B.ID = P.ID_BLOKA)
> LEFT OUTER JOIN TABLE_OTDEL O ON (O.ID = P.ID_OTDELA)


пишет: Пропущен оператор


Sandman25   (2004-02-04 12:14:00) [17]

[9] SPIRIT © (04.02.04 12:13)

Неужели не понимаете, что нам нужно знать сообщение об ошибке???


SPIRIT   (2004-02-04 12:13:00) [18]

Запрост то не работает :(


Sandman25   (2004-02-04 12:02:00) [19]

Рекомендация с большой буквы относится и к идентификаторам из одной буквы :)


Johnmen   (2004-02-04 12:00:00) [20]

Отностительно i или I - это "дополнен некоторыми правилами, созданными на основе собственного опыта разработки."
В оригинале таких рек-ий нет. Но есть рек-ия с большой буквы.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо