Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: проблема с UNION

Сообщения:  [1-9] 

 
 автор: Trianon   (17.08.2007 в 21:49)   письмо автору
 
   для: 1999   (16.08.2007 в 11:27)
 

В разделе ON ставится условие соединения таблиц.

   
 
 автор: 1999   (17.08.2007 в 01:18)   письмо автору
 
   для: 1999   (16.08.2007 в 11:27)
 

.

   
 
 автор: 1999   (16.08.2007 в 11:27)   письмо автору
 
   для: Trianon   (16.08.2007 в 11:10)
 

тогда последний вопрос - все что идет в запросе после ON и до WHERE - условия соединения таблиц?

   
 
 автор: Trianon   (16.08.2007 в 11:10)   письмо автору
 
   для: 1999   (16.08.2007 в 10:52)
 

>я просто имел в виду что UNION бычтрее чем вложенные запросы...
Сам по себе - нет.

   
 
 автор: 1999   (16.08.2007 в 10:52)   письмо автору
 
   для: Trianon   (16.08.2007 в 10:01)
 

план? всмысле? какой?
я просто имел в виду что UNION бычтрее чем вложенные запросы... мне так казалось
за LEFT JOIN спасибо

   
 
 автор: Trianon   (16.08.2007 в 10:01)   письмо автору
 
   для: 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)

   
 
 автор: 1999   (16.08.2007 в 09:45)   письмо автору
 
   для: Trianon   (16.08.2007 в 01:51)
 

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

и сразу вопрос вдогон: по идее мой же запрос должен выполняться быстрей вашего? или нет?

   
 
 автор: 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)

   
 
 автор: 1999   (16.08.2007 в 01:03)   письмо автору
 
 


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

   

Сообщения:  [1-9] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования