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 запроса в одном [2]

 PHP.SU

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


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

> Без описания
ridvik
Отправлено: 14 Июня, 2013 - 19:33:46
Post Id


Частый гость


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


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

[+]


EuGen пишет:
Мне правда кажется, что Вы шутите. Ну да ладно, я довольно много усилий приложил, чтобы Вы написали запрос
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT p.field0, p.field1, u.field3, u.field4.* FROM `".PLAYERS."` AS p
  2. LEFT JOIN `".USERS."` AS u ON (p.uid=u.uid)

- синтаксис таков. При этом среди field0, field1, .. не должно встречаться полей с одинаковыми названиями, то есть поле можно выбрать только из одной таблицы - либо же, если необходимо из обеих, требуется определить разные альясы.


Вроде как уже что-то проясняется)) Сейчас попробую)))
(Добавление)
CODE (htmlphp):
скопировать код в буфер обмена
  1. SELECT t.*, u.uid, u.user_name FROM ".TEAMS." AS t
  2. JOIN ".USERS." AS u ON (t.id_cl=u.uid)
  3. LEFT JOIN (SELECT p.uid, u.uid FROM `".PLAYERS."` AS p
  4. LEFT JOIN `".USERS."` AS u ON (p.uid=u.uid)
  5. WHERE (`status_time`>NOW() - INTERVAL 5 MINUTE)
  6. AND `tid`=12) pl ON (pl.tid = t.id)



Ну тут по любому название полей одинаковые, только альясы разные.... что не так-то?? опять эта ошибка((((
 
 Top
EuGen Администратор
Отправлено: 14 Июня, 2013 - 19:54:34
Post Id


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


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


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




CODE (SQL):
скопировать код в буфер обмена
  1. (SELECT p.uid AS p_uid, u.uid AS u_uid FROM `".PLAYERS."` AS p
  2. LEFT JOIN `".USERS."` AS u ON (p.uid=u.uid)
  3. WHERE (`status_time`>NOW() - INTERVAL 5 MINUTE)

- во внешнем запросе не следует забывать, что выбираются поля с названиями, как у альясов во вложенном запросе (то есть p_uid и u_uid)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
ridvik
Отправлено: 19 Июня, 2013 - 10:25:16
Post Id


Частый гость


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


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

[+]


Ну вообщем все оказалось намного проще)))
Вот собственно рабочий запрос:
CODE (htmlphp):
скопировать код в буфер обмена
  1. $result = $main->db->sql_query("SELECT u.*, t.*, (SELECT COUNT(id) FROM `".PLAYERS."` as p  WHERE `status_time`>NOW() - INTERVAL 5 MINUTE AND p.tid=t.id) as count FROM `".USERS."` as u JOIN `".TEAMS."` as t ON (u.uid=t.id_cl) ORDER BY id");
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB