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 :: Не простая выборка из Бд

 PHP.SU

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


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

> Без описания
ridvik
Отправлено: 24 Февраля, 2013 - 07:57:58
Post Id


Частый гость


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


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

[+]


Доброе утро. Третий день бьюсь над одной задачей, так и не могу понять как же все таки сделать по минимум запросов. Собственно что нужно?
1) есть 3 таблицы: PLAYERS, USERS, TEAMS
2) Таблица PLAYERS: id uid, team_id, team_type, team_league
3) Таблица USERS: uid, user_name
4) Таблица TEAMS: id, type, league

Есть страница редактирования команды, и там надо вывести список добавления игроков, но условия должны быть вот такие:
1) игрок не должен состоять в данной команде
2) игрок не должен состоять в команде, данного типа и лиги как данная команда

Т.е. Если команда 1 имеет такие данные
1) ид = 1
2) тип = 5х5
3) лига = КСС
то
игроки, которые состоят в какой либо команде, которая подходит по всем пунктам, их в списке быть не должно....


Надеюсь описал проблему подробно, уважаемые, помогите пожалуйста....
 
 Top
DeepVarvar Супермодератор
Отправлено: 24 Февраля, 2013 - 10:35:50
Post Id



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


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


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




Это же два запроса.
Команду всеравно тащить на страницу:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM TEAMS WHERE id = ?

Вместо вопроса айдишник из параметров УРЛ типа ?id=765
Теперь пользаков, которых можно добавлять:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT u.* FROM USERS u
  2.   JOIN PLAYERS p ON p.uid = u.uid
  3.   WHERE p.team_id != ?
  4.     AND p.team_type != ?
  5.     AND p.team_league != ?

Там где вопросы подставить известные значения полученные из первого запроса.
 
 Top
ridvik
Отправлено: 24 Февраля, 2013 - 12:12:13
Post Id


Частый гость


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


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

[+]


А 1 запросом это можно сделать?
 
 Top
DeepVarvar Супермодератор
Отправлено: 24 Февраля, 2013 - 12:18:33
Post Id



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


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


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




Можно, но зачем? Всеравно же команду выбирать в вывод придется.
 
 Top
ridvik
Отправлено: 24 Февраля, 2013 - 12:22:39
Post Id


Частый гость


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


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

[+]


не охото лишние запросы делать, что бы в будущем не пришлось это все переделывать, лучше сразу сделать как лучше....
 
 Top
DeepVarvar Супермодератор
Отправлено: 24 Февраля, 2013 - 12:30:23
Post Id



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


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


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




Тогда берите вариант который я предложил. Он самый оптимальный.
 
 Top
ridvik
Отправлено: 08 Марта, 2013 - 13:01:12
Post Id


Частый гость


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


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

[+]


не работает что-то, всегда пустой список выходит((
 
 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