|
|
|
|
|
для: 1999
(16.08.2007 в 11:27)
| | В разделе ON ставится условие соединения таблиц. | |
|
|
|
|
|
|
|
для: 1999
(16.08.2007 в 11:27)
| | . | |
|
|
|
|
|
|
|
для: Trianon
(16.08.2007 в 11:10)
| | тогда последний вопрос - все что идет в запросе после ON и до WHERE - условия соединения таблиц? | |
|
|
|
|
|
|
|
для: 1999
(16.08.2007 в 10:52)
| | >я просто имел в виду что UNION бычтрее чем вложенные запросы...
Сам по себе - нет. | |
|
|
|
|
|
|
|
для: Trianon
(16.08.2007 в 10:01)
| | план? всмысле? какой?
я просто имел в виду что UNION бычтрее чем вложенные запросы... мне так казалось
за LEFT JOIN спасибо | |
|
|
|
|
|
|
|
для: 1999
(16.08.2007 в 09:45)
| | >но я все-таки зхотел понять что не так у меня..
Попробуйте расставить скобки вокруг SELECT и выбрать уникальные определения псевдонимов. Возможно, Ваш вариант и пойдет.
>мой же запрос должен выполняться быстрей вашего? или нет?
Почему Вы так решили?
Вы смотрели план?
Могу составить третий вариант запроса, мне наиболее симпатичный, через левостороннее соединение:
SELECT u.*
FROM chat_users AS u
LEFT JOIN chat_messages AS m
ON u.id = m.user AND m.post_date > NOW() - INTERVAL "30" MINUTE
WHERE u.nick = "Никнейм..." AND (u.registered OR m.user IS NOT NULL)
|
| |
|
|
|
|
|
|
|
для: Trianon
(16.08.2007 в 01:51)
| | ага.. спасибо...
но я все-таки зхотел понять что не так у меня.. вроде же все правильно написал и кол-во полей одинаковое(((
и сразу вопрос вдогон: по идее мой же запрос должен выполняться быстрей вашего? или нет? | |
|
|
|
|
|
|
|
для: 1999
(16.08.2007 в 01:03)
| | То что Вы пытаетесь сотворить, с помощью вложенного запроса записывается куда проще
SELECT u.*
FROM chat_users AS u
WHERE u.nick = "Никнейм..." AND (u.registered OR u.id IN
(SELECT user FROM chat_messages AS m
WHERE m.post_date > NOW() - INTERVAL "30" MINUTE)
|
| |
|
|
|
|
|
|
|
SELECT u.* FROM chat_users AS u
WHERE u.registered = "1" AND u.nick = "Никнейм..."
UNION
SELECT u.* FROM chat_users AS u,chat_messages AS m
WHERE u.registered = "0" AND
u.nick = "Никнейм..." AND
m.user = u.id AND
m.post_date > NOW() - INTERVAL "30" MINUTE
|
подскажите в чем ошибка! связь chat_users с chat_messages: в messages - поле user (туда вписывается id юзеров)
#1064 - You have an error in your SQL syntax near 'UNION SELECT u . * FROM chat_users AS u , chat_messages AS m WHERE u . registere' at line 1 | |
|
|
|
|