SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 01.12.2008 20:02:49

Aliq
Участник
Зарегистрирован: 01.12.2008
Сообщений: 7

JOIN и AS

Вот запрос:
SELECT * FROM aktau_rus_attr_19
JOIN aktau_rus_objects ON aktau_rus_attr_19.Object_Id = aktau_rus_objects.Id AS organ

на него mysql ругается, говорит, синтакс эррор. Ему не нравится "AS organ". А как мне быть, если я хочу поименовать как-то это объединение, чтоб из других частей запроса обращаться к его полям?
на всякий случай, вот реальный запрос, где это используется:

SELECT * FROM aktau_rus_attr_21 as konkurs, (aktau_rus_attr_19 JOIN aktau_rus_objects ON aktau_rus_attr_19.Object_Id = aktau_rus_objects.Id) as organ, (aktau_rus_attr_20 JOIN aktau_rus_objects ON aktau_rus_attr_20.Object_Id = aktau_rus_objects.Id) as type
        WHERE c72=organ.Object_id AND c73=type.Object_id  ORDER BY organ.Idx, type.Idx, date, konkurs.Idx

Неактивен

 

#2 01.12.2008 20:40:22

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: JOIN и AS

Именовать объединение части таблиц нельзя. Можно именовать только таблицы. Т.е. можно
написать как-то так:

SELECT ... FROM a, (SELECT ... FROM b JOIN c ON ...) aliasname, ...


Предупреждение раз. Это не то же самое - будет создаваться временная таблица.

Предупреждение два. Вообще делать объединения часть через запятую, а часть через JOIN -
плохо, а зачастую еще и неэффективно (пугает оптимизатор).

Предупреждение три. Смысла в именовании отдельного JOIN все равно нет, т.к. вы в любом
случае именованием будете добираться к столбцам изначальных таблиц, именовать нужно именно
их.

Неактивен

 

#3 02.12.2008 07:34:00

Aliq
Участник
Зарегистрирован: 01.12.2008
Сообщений: 7

Re: JOIN и AS

спасибо, работает способ!

по поводу предупреждений:
1) имеется в виду, что долго запрос будет обрабатываться? если да - мне некритично, речь идет об обычном сайте
2) просто мне так удобней при формировании запроса, чтоб вызов этой объединенной таблицы не "размазывался" по запросу. а оптимизатор... можно в 2 словах - это че такое? sad
3) у меня в запросе для 2 объединений используется одна таблица. так что для того, чтобы образщаться к ее полям, мне придется все равно этим 2 экземплярам псевдонимы давать. на мой взгляд, логичнее будет поименовать все объединение, е.к. оно рассматривается как единое целое для остального запроса

Неактивен

 

#4 03.12.2008 00:38:28

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 848

Re: JOIN и AS

Так сделайте тогда VIEW и из приложения к нему и обращайтесь.

Неактивен

 

#5 03.12.2008 11:06:37

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: JOIN и AS

Если "обычный сайт" хорошо написан, то он не грузит систему smile А если написан плохо, то тормозит sad
Оптимизатор - это зверек, который смотрит на Ваш запрос и думает, как его лучше выполнить.

Удобство написания выражения - это не правильный подход при оптимизации smile Лень - штука хорошая,
но пользоваться ей нужно осторожно, it has the super cow powers smile

Неактивен

 

#6 03.12.2008 11:47:33

Aliq
Участник
Зарегистрирован: 01.12.2008
Сообщений: 7

Re: JOIN и AS

то есть, оптимизатор - это часть СУБД, да?


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

Неактивен

 

#7 03.12.2008 13:33:56

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: JOIN и AS

Да smile

Тогда view Вас спасут smile

Неактивен

 

#8 03.12.2008 13:44:15

Aliq
Участник
Зарегистрирован: 01.12.2008
Сообщений: 7

Re: JOIN и AS

да я вложенным запросом обошелся (последовал первому совету)...

а view поддерживается только с 5.0.1, не на всех хостингах еще есть

Неактивен

 

#9 03.12.2008 13:56:57

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: JOIN и AS

А вот полагаться на то, что у кого-то стороннего сайт меньше 1000 хитов в день, не стоит.
Плохих проектов в мире полно, нужно писать хорошие. Это я про "все хостинги".

Неактивен

 

#10 03.12.2008 14:08:31

Aliq
Участник
Зарегистрирован: 01.12.2008
Сообщений: 7

Re: JOIN и AS

smile я полагаюсь на то, что сайт, котовый я делаю, не будет забит посетителями.

скажу по секрету, это - сайт гос. органа местного значения

Неактивен

 

#11 03.12.2008 14:35:24

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: JOIN и AS

Тем более - стоит делать хорошо smile

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson