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