Форум: "Базы";
Текущий архив: 2004.02.29;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.009 c