Глупая ошибка sql - PullRequest
       1

Глупая ошибка sql

1 голос
/ 29 октября 2010

У меня есть это заявление SQL:

SELECT game.game_id FROM game, userGame WHERE userGame.user_id = 1
AND userGame.game_id != game.game_id;

И я получаю это:

1
1
2
2
3
3
4
4
4
5
5
5

Я запускаю оператор в базе данных Sqlite3 на Android 2.1.

Таблицы:

USERGAME
--------
userId
gameId
more_columns

GAME
-----
gameId
more_columns

Как я могу решить эту ошибку?

UPDATE:
Я хочу получить все идентификаторы игр, которых нет в таблице пользовательских игр, когда userId = 1.

Спасибо.

Ответы [ 3 ]

1 голос
/ 29 октября 2010

Не существует синтаксис:

select gameID
from game g
where not exists
(select null from usergame ug 
 where g.gameID = ug.gameID and ug.userID = 1)
0 голосов
/ 29 октября 2010
SELECT game_id 
  FROM game a  
 WHERE NOT EXISTS (Select 1 
                     from game b, userGame c 
                    where a.game_id=b.game_id and b.game_id=c.game_id and c.user_id=1)
0 голосов
/ 29 октября 2010

Я не уверен насчет синтаксиса Sqlite, но вы можете попробовать что-то вроде этого.Может быть, кто-то еще может уточнить синтаксис?

SELECT  *
FROM    game a left outer join usergame b on a.gameId = b.gameId and b.userId = 1
WHERE   b.gameId IS NULL

ИЛИ

SELECT  *
FROM    game a, usergame b
WHERE   (a.gameId *= b.gameId AND b.userId = 1)
        AND b.gameId IS NULL

По сути, вы говорите: «Дайте мне все игры в таблице [game], но исключитете, которые есть у userID 1. "

Я не уверен, что это то, чего вы пытаетесь достичь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...