2016-01-13 2 views
0

Почему следующий запрос SQL не возвращает все столбцы второй таблицы с именем комментарии, но вместо этого только идентификатор столбца из wp_users таблицы?Mysql запрос не возвращает столбцы 2 присоединяемой таблицы

SELECT ID FROM wp_users 
INNER JOIN (select * from wp_comments) as comments 
ON ID = comments.user_id 
WHERE comments.comment_type = 'user_course' 

Если изменить запрос к следующему утверждению он работает, как это должно быть, что означает все столбцы 1 и 2-й таблицу, которые, конечно, имеют соответствие критериев WHERE.

SELECT * FROM wp_users 
INNER JOIN (select * from wp_comments) as comments 
ON ID = comments.user_id 
WHERE comments.comment_type = 'user_course' 
+4

SELECT ID FROM ... делая то, что вы просили. Если вы хотите чего-то еще, вы также должны попросить об этом. –

+0

'select ID, комментарии. * From ...' – Kisaragi

+0

Я ссылаюсь на первый пример запроса. ID = возвращается нормально, но я не получаю результатов из второй таблицы с «select * from wp_comments». Зачем ? – Maverick

ответ

-1

Ваш запрос недействителен. Вы делаете дополнительный выбор внутри INNER JOIN, которые создают новую временную таблицу. Затем вы присоединитесь к этой таблице. Поля из этой временной таблицы автоматически не будут выбраны в результатах запроса. Вы должны указать набор полей, которые вы хотите выбрать. Таким образом, вы можете напрямую присоединиться к таблице wp_comments и добавить все поля из этой таблицы в итоговые поля, заданные с помощью c.*. Все запросы должны быть такими:

SELECT w.id, c.* 
FROM wp_users w 
INNER JOIN wp_comments c on c.user_id = w.ID 
    and c.comment_type = 'user_course' 
+0

@Jay Blanchard я добавил описание. – Evgeny

+0

Итак, почему почти тот же запрос работает, как и ожидалось во втором примере? – Maverick

+0

Какой второй пример вы имеете в виду? Если вы имеете в виду ваш пример, из-за '*', что означает «выберите все поля из объединенных таблиц». Если вы говорите о моем примере, то из-за 'c. *', Что означает все поля из таблицы c (псевдоним для 'wp_comments') – Evgeny