Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.016 c
2-1150873257
logslava
2006-06-21 11:00
2006.07.09
Работа с TBitmap


11-1129885598
tico-tico
2005-10-21 13:06
2006.07.09
Tabstop у Combobox


2-1149771876
HaeMa
2006-06-08 17:04
2006.07.09
Как программно узнать количество строк в текстовом файле?


3-1147340919
gaga
2006-05-11 13:48
2006.07.09
Связь таблиц если в подчиненной таблице 2 втор. ключа


9-1131988590
Fedot Fedotich
2005-11-14 20:16
2006.07.09
Загрузка моделей в формате md2





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский