Запрос для игры в города

Статус
В этой теме нельзя размещать новые ответы.

Q_BASIC

Хранитель порядка
Регистрация
30 Ноя 2013
Сообщения
516
Реакции
1.240
Приветствую,

Есть две таблицы:
1. Города (mt_cities)
2. Использованные города (mt_cities_played)

Надо получить город, который еще не использовался и начинается с определенной буквы.

Я сделал такой запрос:
Код:
SELECT mt_cities.id, mt_cities.name
FROM mt_cities
LEFT JOIN mt_cities_played
ON mt_cities_played.city_id = mt_cities.id
WHERE
    mt_cities.name LIKE "С%"
    AND
    mt_cities_played.user_id = 123
    AND
    mt_cities_played.city_id IS NULL

И ничего не получаю. Что не так?

Позже понял:


Не так, похоже, то, что я указываю что записи в mt_cities_played быть не должно и одновременно у записи, которой нет, должно быть user_id = 123.

Как тогда сделать запрос?

Таблицы:

Код:
mt_cities:
id | name
1  | Самара
2  | Саратов

mt_cities_played:
id | city_id | user_id
1  |  1      | 123

Так ты бы поделился игрой для начала. А то так не понятно ни чего.
 
Последнее редактирование модератором:
Так наверное
PHP:
SELECT mt_cities.id, mt_cities.name
FROM mt_cities
LEFT JOIN mt_cities_played
ON mt_cities_played.city_id != mt_cities.id
WHERE
  mt_cities.name LIKE "С%"
  AND
  mt_cities_played.user_id = 123
 
  • Заблокирован
  • #3
Последнее редактирование модератором:
Код:
select * from mt_cities where id not in (select city_id from mt_cities_played) and name like 'С%'
ну или

Код:
select * from mt_cities where id not in (select city_id from mt_cities_played) and left(name, 1) = 'С'
 
Последнее редактирование модератором:
Код:
SELECT c.id, c.name
FROM mt_cities_played p
RIGHT JOIN mt_cities c
ON ( p.city_id = c.id )
WHERE c.name LIKE ( "С%" )
 
Последнее редактирование модератором:
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху