MySQL запрос с Inner Join, возвращающий ноль строк - PullRequest
0 голосов
/ 16 августа 2011
SELECT *
FROM Posts
WHERE MATCH (Posts.City) AGAINST ('Lujan') 

Показывает 29 строк.Но:

SELECT Users.*, Posts.* 
FROM Users 
INNER JOIN Posts ON Users.User = Posts.User 
WHERE MATCH (Posts.City) AGAINST ('Lujan')

Получил ноль результатов, в то время как я должен получить точно такие же результаты.

Добавление объяснения к повторному запросу:

id  select_type table   type    possible_keys   key key_len ref rows    Extra
1   SIMPLE  Posts   fulltext    city_comparator,user_comparator city_comparator 0       1   Using where
1   SIMPLE  Users   eq_ref  user_unique,user_comparator user_unique 62  chusmix.Posts.User  1    

У меня нетИдея, что это означает, но также и в таблицах пользователей полнотекстовый индекс "user_comparator" имел мощность 0. В то время как я зарегистрировал 10+ пользователей.У меня также есть уникальный индекс для столбца Users.User и основной индекс для Users.ID.

Я что-то изменил, и все запросы с INNER JOIN перестали работать.Что я могу сделать, чтобы это исправить?спасибо

Ответы [ 2 ]

3 голосов
/ 16 августа 2011

Это означает, что в таблице Users нет строки, совпадающей с таблицей Posts. Если вы хотите выбрать строки, даже если совпадений нет, используйте внешнее объединение (в вашем случае измените ВНУТРЕННЕЕ СОЕДИНЕНИЕ с помощью ПРЯМОГО СОЕДИНЕНИЯ).

1 голос
/ 16 августа 2011

Возвращает ли это ваши строки?Возможно, в ваших записях сообщений нет соответствующей записи пользователя в таблице «Пользователи».

SELECT *
FROM Posts
LEFT JOIN Users ON Users.User = Posts.User
WHERE MATCH (Posts.City) AGAINST ('Lujan') 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...