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

Вниз

SQL Запрос   Найти похожие ветки 

 
SPIRIT ©   (2004-02-04 10:29) [0]

Допустим есть таблица "сотрудники" (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


 
asp ©   (2004-02-04 10:34) [1]

Путаница выходит ID & KOD.
А запрос:
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 10:58) [2]

Рекомендуют не ставить алиас из одной буквы o или O - легко перепутать с нулем.


 
Johnmen ©   (2004-02-04 11:10) [3]

...рекомендуют не ставить алиас из нескольких букв o или O - легко перепутать с нулями.
:)))))))))


 
Sandman25 ©   (2004-02-04 11:13) [4]

[3] Johnmen © (04.02.04 11:10)

По той же причине не рекомендуют ставить алиас из буквы l (строчный вариант L). Да зачем далеко ходить - даже в Pascal рекомендуют не называть переменные i, j, l.. . Лучше уж I, J, L.


 
Johnmen ©   (2004-02-04 11:39) [5]

>Sandman25 © (04.02.04 11:13) [4]
>Да зачем далеко ходить - даже в Pascal ...

Не встречал таких рекомендаций...:)
Но допускаю, что они могли быть в к.-л. книге. Так это личное дело автора, его манера, стиль...


 
Sandman25 ©   (2004-02-04 11:47) [6]

Стандарт стилевого оформления исходного кода Delphi

http://delphi.vitpc.com/asp/viewitem.asp?UrlItem=/article/coderules.htm

Поиск строки "Когда Вы раздумываете над именами переменных"


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

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


 
Sandman25 ©   (2004-02-04 12:02) [8]

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


 
SPIRIT ©   (2004-02-04 12:13) [9]

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


 
Sandman25 ©   (2004-02-04 12:14) [10]

[9] SPIRIT © (04.02.04 12:13)

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


 
SPIRIT ©   (2004-02-04 12:15) [11]


> 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:20) [12]

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:25) [13]


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

да


 
Sandman25 ©   (2004-02-04 12:27) [14]

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


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

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

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


 
SPIRIT ©   (2004-02-04 12:36) [16]

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


 
Johnmen ©   (2004-02-04 13:04) [17]

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


 
SPIRIT ©   (2004-02-04 13:11) [18]

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:23) [19]

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


 
SPIRIT ©   (2004-02-04 13:52) [20]

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


 
Johnmen ©   (2004-02-04 13:56) [21]

>SPIRIT © (04.02.04 13:52)

Не понял...


 
SPIRIT ©   (2004-02-04 14:02) [22]

ну сообщение выдает об ошиьке там написано: ошибка синтаксиса (пропущен оператор)в выражении запроса "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 14:19) [23]

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


 
SPIRIT ©   (2004-02-04 14:20) [24]

все... дошло наконец-то
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:33) [25]

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


 
SPIRIT ©   (2004-02-04 14:39) [26]

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



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

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

Наверх




Память: 0.52 MB
Время: 0.021 c
1-94008
Настенька
2004-02-17 08:45
2004.02.29
последний символ в label


14-94140
Ru
2004-02-04 09:34
2004.02.29
Опрос общественного мнения ;)


14-94175
Sergo
2004-02-07 10:19
2004.02.29
RW (Nero)


14-94112
Vuk
2004-02-09 16:48
2004.02.29
Нашел интересный сервис в сети.


11-93824
Евгений
2003-06-06 10:23
2004.02.29
KolZLib