Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Выборка по 2 таблицам

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
ВэйДлин
Отправлено: 04 Ноября, 2012 - 17:27:27
Post Id


Гость


Покинул форум
Сообщений всего: 84
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Мне надо для ленты новостей юзера выбрать сразу несколько таблиц и сортировать их по общему полю date
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT t1.*, t2.*
  2.   FROM `table_1` AS t1, `table_2` AS t2
  3.   ORDER BY t1.date, t2.date DESC LIMIT 12

Но когда я делаю выборку результаты повторяются
Как этого избежать?
 
 Top
KingStar
Отправлено: 04 Ноября, 2012 - 17:35:37
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT t1.*, t2.*
  2. FROM `table_1` AS t1, `table_2` AS t2
  3. ORDER BY t1.date, t2.date
  4. GROUP BY date
  5. DESC LIMIT 12


-----
То что программа работает, не означает что она написана правильно!
 
 Top
ВэйДлин
Отправлено: 09 Ноября, 2012 - 00:03:06
Post Id


Гость


Покинул форум
Сообщений всего: 84
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Выдает ошибку
CODE (SQL):
скопировать код в буфер обмена
  1. You have an error IN your SQL syntax; CHECK the manual that corresponds TO your MySQL server version FOR the RIGHT syntax TO USE near 'GROUP BY date LIMIT 0, 30' at line 5
 
 Top
EuGen Администратор
Отправлено: 09 Ноября, 2012 - 08:07:47
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Условие соединения таблиц где? И - да, выше перепутаны местами ORDER BY и GROUP BY


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
eai
Отправлено: 09 Ноября, 2012 - 08:11:05
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009  
Откуда: Петроград


Помог: 10 раз(а)




EuGen пишет:
Условие соединения таблиц где? И - да, выше перепутаны местами ORDER BY и GROUP BY

Условия соединения вообще строго говоря не обязательны, но только в одном случае из миллиона отсутствие условий соединений не является ошибкой логической

(Отредактировано автором: 09 Ноября, 2012 - 08:12:18)

 
 Top
EuGen Администратор
Отправлено: 09 Ноября, 2012 - 08:17:50
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




eai
Разве я указал, что это ошибка? Я отвечал на вопрос автора темы
ВэйДлин пишет:
Но когда я делаю выборку результаты повторяются
(кстати, не уточненного - что и как повторяется) - поскольку без условия соединения таблиц - оно будет прямым декартовым произведением множеств строк этих таблиц, и потому, разумеется, повторения будут.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
eai
Отправлено: 09 Ноября, 2012 - 08:29:23
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009  
Откуда: Петроград


Помог: 10 раз(а)




EuGen пишет:
eai
Разве я указал, что это ошибка?


Дык я как раз тебя тёзка и хотел поддержать, мол хоть это и не синтаксис еррор но все таки глобальный еррор Улыбка
 
 Top
ВэйДлин
Отправлено: 09 Ноября, 2012 - 23:24:36
Post Id


Гость


Покинул форум
Сообщений всего: 84
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Вот полный запрос
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT q.*, d.*
  2. FROM `questions` AS q, `discussion` AS d
  3. WHERE q.TO = 1 OR d.TO = 1
  4. ORDER BY q.date, d.date
  5. GROUP BY date DESC
  6. LIMIT 12
 
 Top
DeepVarvar Супермодератор
Отправлено: 09 Ноября, 2012 - 23:28:32
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




ВэйДлин пишет:
Вот полный запрос
И? Не робит?
date - зарезервированное слово и требует окавычивания апострофами.
(Добавление)
ВэйДлин пишет:
GROUP BY date DESC
Да - щидевырь.
Не знаю ваших задач, просто правлю сам запрос:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT q.*, d.*
  2.   FROM `questions` AS q, `discussion` AS d
  3.   WHERE q.`to` = 1 OR d.`to` = 1
  4.   GROUP BY q.`date`
  5.   ORDER BY q.`date` DESC
  6.   LIMIT 12


И почитайте сюда: http://forum.php.su/topic.php?fo...33&topic=771
 
 Top
ВэйДлин
Отправлено: 10 Ноября, 2012 - 02:47:44
Post Id


Гость


Покинул форум
Сообщений всего: 84
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




оо, спасибо, заработало.
Ещё такой вопрос, как влепить сюда UNION? Или как мне склеить таблицы вертикально? Нужно обрабатывать все по отдельности для вывода в ленте новостей
 
 Top
biperch
Отправлено: 10 Ноября, 2012 - 03:33:20
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 588
Дата рег-ции: Окт. 2009  
Откуда: Днепропетровск


Помог: 8 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1.                   SELECT snum, sname
  2.                       FROM Salespeople
  3.                       WHERE city = 'London'
  4.  
  5.  
  6.                       UNION
  7.  
  8.  
  9.                    SELECT cnum, cname
  10.                       FROM Customers
  11.                       WHERE city = 'London';

(Отредактировано автором: 10 Ноября, 2012 - 03:36:46)

 
 Top
ВэйДлин
Отправлено: 10 Ноября, 2012 - 15:06:16
Post Id


Гость


Покинул форум
Сообщений всего: 84
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Проблема в том что в двух таблицах совершенно разные столбцы, за исключением date
Из-за этого пишет ошибку
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB