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

Вниз

SQL LEFT JOIN   Найти похожие ветки 

 
alex-drob ©   (2006-06-12 10:25) [0]

Как использовать в одном запросе несколько объеденений LEFT JOIN.
Например:
SELECT n_node.name
FROM info_prod
LEFT JOIN n_node ON n_node.id=info_prod.id_node

так работает.

А так:
SELECT n_node.name, sklad_name
FROM info_prod
LEFT JOIN n_node ON n_node.id=info_prod.id_node
LEFT JOIN sklad_name ON sklad_name.id=info_prod.id_sklad

не работает.


 
wicked ©   (2006-06-12 10:27) [1]

1) СУБД какая?
2) что пишет в тексте ошибки?....
3) у тебя там ошибка
> SELECT n_node.name, sklad_name
<- вот здесь....


 
atruhin ©   (2006-06-12 10:32) [2]

SELECT n_node.name, sklad_name.sklad_name
FROM info_prod
LEFT JOIN n_node ON n_node.id=info_prod.id_node
LEFT JOIN sklad_name ON sklad_name.id=info_prod.id_sklad


 
alex-drob ©   (2006-06-12 10:38) [3]

Запрос:
SELECT n_node.name, sklad_name.name
FROM info_prod
LEFT JOIN n_node ON n_node.id=info_prod.id_node
LEFT JOIN sklad_name ON sklad_name.id=info_prod.id_sklad


Access

Ошибка синтаксиса (пропущен оператор) в выражении запроса "n_node.id=info_prod.id_node
LEFT JOIN sklad_name ON sklad_name.id=info_prod.id_sklad"


 
wicked ©   (2006-06-12 10:52) [4]

Акцесс, так я и думал.... у тебя есть 2 варианта:
1) выбросить это недоразумение на помойку
2) изучить идиотские (и не менее) ограничения на синтаксис left/right join-ов в Акцессе... это несложно, но неприятно, там скобки надо расставлять....


 
alex-drob ©   (2006-06-12 10:56) [5]


> 1) выбросить это недоразумение на помойку

Если это про access то база уже создана и заполнена.

А где почитать про синтаксис left/right join-ов в Акцессе. В справке я не нашёл.


 
wicked ©   (2006-06-12 11:05) [6]

ой, с этим трудно, я сейчас открыл его и попробовал что то найти....
изучить можно на примере - создать в визарде запрос на выборку из 3-х и более таблиц, затем перейти в режим SQL и посмотреть, что он там накрутил....


 
alex-drob ©   (2006-06-12 11:08) [7]

Спасибо! Сейчас попробую.


 
sniknik ©   (2006-06-12 11:26) [8]

> 1) выбросить это недоразумение на помойку
по такому принципу надо выкинуть все, что не понимаеш. а т.к. справку читать не принято... то просто ВСЕ.

> Запрос:
> SELECT n_node.name, sklad_name.name
> ...
синтаксис access слегка отличается от стандарта, запрос должен выглядеть примерно так
SELECT i.*, n.name, s.name
FROM (info_prod i LEFT JOIN n_node n ON i.id_node=n.id)
LEFT JOIN sklad_name s ON i.id_sklad=s.id


 
sniknik ©   (2006-06-12 11:27) [9]

> В справке я не нашёл.
значит не искал


 
wicked ©   (2006-06-12 11:36) [10]

> sniknik ©   (12.06.06 11:26) [8]
"непра-а-авильно ты дядя Федор мои мысли понимаешь.... " :)
просто считаю, что в студенческие годы я достаточно намучился с Акцессом, чтобы сложить о нем такое мнение, коим и делюсь....
Оракл я тоже не понимаю, но так о нем не выражаюсь, по скольку просто не работал с ним....
и Интербейз с его версиями я не всегда понимаю, но тоже не стремлюсь его обхаять, а по возможности понять эту закрученную логику и терминологию....
и мыскл с его урезанным языком не обхаиваю... ну... иногда, в приватных разговорах с его фоннатами.... ;)

> sniknik ©   (12.06.06 11:27) [9]

> > В справке я не нашёл.
> значит не искал

возможно, оно там и есть, только вот поиск на четкое "select statement syntax" не дал ни одного результата на то, что нужно... не спорю, Акцесс имеет свою терминологию и вообще все свое, но о том, насколько это хорошо спроектированно, говорит к нему отношение со стороны разработчика - прекращение разработки в пользу msde и mssql....


 
alex-drob ©   (2006-06-12 11:36) [11]


> sniknik ©   (12.06.06 11:27) [9]

Я не нашёл как расставлять скобки. А нашёл только пример с объединением дву таблиц.


> sniknik ©   (12.06.06 11:26) [8]

Спасибо всё получилось!


 
wicked ©   (2006-06-12 11:39) [12]


> говорит к нему отношение со стороны разработчика - прекращение
> разработки в пользу msde и mssql....

имеется в виду jet engine....


 
alex-drob ©   (2006-06-12 12:04) [13]

Ещё вопрос, если у меня в первой таблице содержаться два разных поля, которые содержат id одной и той же таблиц, но разные значения, как составить запрос.

Т.е. есть таблица sklad_name с полями id, name
и таблица info_prod с полями id_sklad, id_sklad_new, .....

как составить запрос чтобы в результате был набор данных с полями sklad_name.name, sklad_name.name AS new_sklad

Пробую так:
SELECT sklad_name.name,sklad_name.name AS new
FROM (info_prod LEFT JOIN sklad_name ON sklad_name.id=info_prod.id_sklad_new) LEFT JOIN sklad_name ON sklad_name.id=info_prod.id_sklad;

пишет Не поддерживаеться операция объеденения.


 
wicked ©   (2006-06-12 12:09) [14]

SELECT sklad_name.name,sklad_new.name AS new
FROM (info_prod LEFT JOIN sklad_name AS sklad_new ON sklad_new.id=info_prod.id_sklad_new)
LEFT JOIN sklad_name ON sklad_name.id=info_prod.id_sklad;


 
alex-drob ©   (2006-06-12 12:12) [15]

У меня нет таблицы sklad_new.
Оба поля в результате запроса должны выбираться из одной и тойже таблицы, но содержать различные значения.


 
wicked ©   (2006-06-12 12:15) [16]

слово AS мы не видим?.... :)
алиасить можно не только поля, но и таблицы, для того, чтобы можно было соединять их самих с собой и для легкости воприятия запроса...


 
alex-drob ©   (2006-06-12 12:19) [17]

Спасибо!


> но и таблицы

Этого я не знал.


 
Плохиш ©   (2006-06-12 12:20) [18]


> wicked ©   (12.06.06 11:36) [10]

> Акцесс имеет свою терминологию и вообще все свое, но о том,
>  насколько это хорошо спроектированно, говорит к нему отношение
> со стороны разработчика - прекращение разработки

Вот я думаю, что это за Access 2007 в составе Office 2007?


 
wicked ©   (2006-06-12 12:25) [19]

> Плохиш ©   (12.06.06 12:20) [18]
я там уточнил дальше, прекращение чего имел в виду... а Акцесс как продукт не имеет себе равных в своей нише.... и, увы, не из-за того, за что ценят СУБД...


 
sniknik ©   (2006-06-12 12:32) [20]

> Я не нашёл как расставлять скобки. А нашёл только пример с объединением дву таблиц.
раздел "Операция INNER JOIN", есть пример с обьеденение трех. в LEFT JOIN, RIGHT JOIN и правда нет, но там в принципе только описание специфики и примечание "Более подробные сведения по этому вопросу можно найти в описании операции INNER JOIN." т.к. это общее описание.

wicked ©   (12.06.06 11:36) [10]
у меня другие впечатления, и т.к. работаю/ал с довольно большим количеством типов баз/sql серверов, и могу сравнивать, могу сказать что access не самая плохая база (не программа, с ней не работаю, именно база - mdb), а если вообще учесть что это локальная, так позиционируется, то вообще одна из самых лучших.
от orscle кстати, сколько не сталкивался (редко, и слава богу наверное), одни разочарования... и ладно бы сам "парился" (можно списать на незнание) но был случай спецов вызывали... которые проблему так и не решили. :(



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

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

Наверх




Память: 0.52 MB
Время: 0.056 c
2-1151101235
arturich
2006-06-24 02:20
2006.07.09
определение индекса строки по найденному слову


6-1141646556
quantum
2006-03-06 15:02
2006.07.09
Картинка и TWebbrowser


2-1150796160
TrainerOfDolphins
2006-06-20 13:36
2006.07.09
Cntrl+Delete –удаление записи через DBGrid


15-1149735996
tButton
2006-06-08 07:06
2006.07.09
деньги...


2-1150509587
fantasy
2006-06-17 05:59
2006.07.09
SQL