SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 15.02.2014 17:44:43

Kiraja
Участник
Зарегистрирован: 15.02.2014
Сообщений: 6

Помогите составить запрос к базе

Здравствуйте. Простите, что возможно обращаюсь с элементарным вопросом, если поможете, буду благодарна.
Нужно составить запрос:
Шахматный турнир, в 1 игре 2 участника из одного города. Есть 2 таблицы:
1) USER (user_id, name)
2) GAMES (game_id, player1_id, player2_id, city)
Нужно выбрать 20 строк из таблицы GAMES, но вместо айдишников игроков отобразить их имена из таблицы USER.
Если можно, подскажите, как составить такой запрос на DQL для Doctrine1, но можно и на чистом SQL.

И второй вопрос:
Как подсчитать количество игроков во всех играх, сгруппировав их по городам, если в поле player2_id таблицы GAMES может быть 0, если соперник пока не найден?
Большое спасибо smile

Неактивен

 

#2 15.02.2014 18:14:03

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Помогите составить запрос к базе

1.

select game_id, u1.name, u2.name, city from games g join `user` u1 on g.player1_id=u1.user_id join `user` u2 on g.player2_id=u2.user_id limit 20;


2. city относится к какому участнику? Или играть могут только участники из одного города?

Неактивен

 

#3 15.02.2014 18:16:04

Kiraja
Участник
Зарегистрирован: 15.02.2014
Сообщений: 6

Re: Помогите составить запрос к базе

Спасибо за ответ
играть только с одного города могут

Отредактированно Kiraja (15.02.2014 18:16:34)

Неактивен

 

#4 15.02.2014 18:19:59

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Помогите составить запрос к базе

Уточните, есть 3 игрока в одном городе. Прошло 2 игры: 1ый со 2ым и 1ый с 3им. Каков должен быть ответ?

Неактивен

 

#5 15.02.2014 18:25:03

Kiraja
Участник
Зарегистрирован: 15.02.2014
Сообщений: 6

Re: Помогите составить запрос к базе

В заявке участвуют только 2 игрока с одного города. Когда первый подает заявку, player2_id = 0. Когда находится соперник, его айдишник записывается в player2_id. После игры заявка удаляется. Если в 1 городе 3 игрока, первые 2 кто подал заявку играют, а 3 ждет пока не найдется ему пара. Нужно вывести (если возможно) число активных игроков на данный момент, тех кто уже играет, и тех кто в ожидании соперника.

Неактивен

 

#6 15.02.2014 18:29:52

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Помогите составить запрос к базе


select city, count(*) from games where player2_id = 0 group by city; -- количество ожидающих для каждого города

select city, 2*count(*) from games where player2_id <> 0 group by city; -- кол-во активных для каждого города

Неактивен

 

#7 15.02.2014 18:32:42

Kiraja
Участник
Зарегистрирован: 15.02.2014
Сообщений: 6

Re: Помогите составить запрос к базе

Большое вам спасибо. Я думала, можно ли как-то одним запросом подсчитать количество, но наверное сделаю так как вы подсказали, двумя.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson