SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

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

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

Вы не зашли.

#1 11.09.2009 14:16:54

tbazadaykin
Участник
Зарегистрирован: 11.09.2009
Сообщений: 3

join ломают мне моск!

короче. че-то я парю с join. объясните мне вот что. есть заврос.
select n.nid from
node n left join (content_type ct, node n2 on ct.nid=n2.nid and n2.uid=1) on ct.some_field=n.nid

я до этого работал с фаирбердом. если мой маразм мне не изменяет то там то что в скопкав приведется к виду
select * from content_type ct, node n2 where ct.nid=n2.nid and n2.uid=1
а потом уже результаты этого действия будут сджойнены к n по условию ct.some_field=n.nid.
а майскл почему-то делает это так
select n.nid from
node n
left join content_type c on ct.some_field=n.nid
left join node n2 on ct.nid=n2.nid and n2.uid=1
т.е такое ощущение что он просто игнорирует скобки, нах! а они ведь указывают на то что сджойнить-то надо не каждую таблицу по отдельности, а результат взаимодействия этих таблиц.
так и дожно быть? на самом деле майскл так интерпретирут запросы или я пишу че-то не так. может тут есть какой-то специальный джойн?. спасибо.

Отредактированно tbazadaykin (11.09.2009 14:19:37)

Неактивен

 

#2 11.09.2009 14:37:57

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: join ломают мне моск!

А какая у вас версия? До 5.0.1 в таком запросе скобки будут проигнорированны. После нет.

Неактивен

 

#3 11.09.2009 14:40:56

tbazadaykin
Участник
Зарегистрирован: 11.09.2009
Сообщений: 3

Re: join ломают мне моск!

ааа, вот где собака зарыта.
а если я запрос переписываю вот так
select n.nid from
node n  natural left join (content_type ct inner join node n2 on ct.nid=n2.nid and n2.uid=1) on ct.some_field=n.nid
он мне говорит что не пральный синтаксис "on ct.some_field=n.nid". это тоже по этой же причине. и вообще, я как почитал в мануалах left join это тоже самое что и cross join. это так? я прально понял?

Отредактированно tbazadaykin (11.09.2009 14:43:43)

Неактивен

 

#4 11.09.2009 14:43:30

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

Re: join ломают мне моск!

1. Постарайтесь писать по-русски на этом форуме, иначе мы Вам помочь ничем не сможем.
2. Не употребляйте матерные выражения — тематика форума не такова, чтобы люди читали такую речь.
3. Ваш запрос не несет смысла, поэтому он может быть обработан как угодно. Если Вы подразумеваете вложенный SELECT — напишите его. Все, что Вы подразумеваете, но не написали, — может быть трактовано иначе.

Неактивен

 

#5 11.09.2009 14:47:39

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: join ломают мне моск!

Нет. CROSS JOIN это синоним LEFT JOIN.

Неактивен

 

#6 11.09.2009 15:02:23

tbazadaykin
Участник
Зарегистрирован: 11.09.2009
Сообщений: 3

Re: join ломают мне моск!

понятно. спасибо.
еще вопрос.
например есть запрос select id from table;
возвращает
id
1
2
3
4
5

есть какая нибудь функция чтобы вернуть
1,2,3,4,5
ну что-то вроде select somefunction(',',id) from table;

Неактивен

 

#7 11.09.2009 15:06:56

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: join ломают мне моск!

group_concat()

Неактивен

 

Board footer

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