почему запрос не может выбрать конкретный идентификатор с помощью mysqli? - PullRequest
0 голосов
/ 05 февраля 2019

Я сталкиваюсь со странной проблемой при использовании таблицы mysqli.У меня есть таблица, в которой есть несколько записей.Я выполняю следующий запрос

SELECT * FROM `users` WHERE 
EXISTS (
  SELECT * 
  FROM `games` 
  INNER JOIN `users_games` 
    ON `games`.`id` = `users_games`.`game_id`
  WHERE 
    `users`.`id` = `users_games`.`user_id` AND `game_id` = 10
  ) 
AND `users`.`id` = 10 
LIMIT 12;

В таблице users_games есть 11 строк (1 to 13) для user_id = 10.Приведенный выше запрос работает для всех

`game_id` = 10 /* it is working */ 

Когда я пытаюсь выполнить game_id= 1, запись не отображается, однако есть строка для game_id= 1.

Ниже users_games стол

enter image description here

1 Ответ

0 голосов
/ 05 февраля 2019

Учитывая этих пользователей

select id from users;
+-----+
| id  |
+-----+
|   1 |
|   2 |
|   3 |
|   6 |
|   7 |
|   8 |
|  10 |
|  12 |
|  14 |
|  15 |
|  16 |
|  17 |
| 999 |
+-----+

и это

drop table if exists games,users_games;

create table games (id int);
create table users_games(user_id int, game_id int);

insert into games values (1),(10);
insert into users_games values(1,1),(1,10),(10,1);

Ваш запрос

SELECT id FROM `users` WHERE 
EXISTS (
  SELECT * 
  FROM `games` 
  INNER JOIN `users_games` 
    ON `games`.`id` = `users_games`.`game_id`
  WHERE 
    `users`.`id` = `users_games`.`user_id` AND `game_id` = 1
  ) 
AND `users`.`id` = 10;

Производит

+----+
| id |
+----+
| 10 |
+----+
1 row in set (0.00 sec)

Что какожидается.Вы можете улучшить свой вопрос, включив образцы данных в текст в вопросе (как я сделал в ответе).

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