Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-93971
oss
2004-02-17 14:06
2004.02.29
запустить системные программы


1-93967
Алексей
2004-02-17 09:15
2004.02.29
Please wait на время выполнения цикла


14-94129
Домарощинер
2004-02-09 19:57
2004.02.29
Классный плагиат


14-94177
Soft
2004-02-06 22:34
2004.02.29
Что дyмают о pyсских пpогpаммистах их западные коллеги


3-93775
kiril-
2004-02-04 10:31
2004.02.29
UPPER в Interbase





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский