![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
different |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 3.4.2008 Репутация: нет Всего: нет |
Есть таблица user, в которой есть поля:
user_id user_name Также есть таблица news, в которой следующие поля: news_id news_author news_title news_body news_date Необходимо выбрать 20 последних записей из таблицы news, при этом поле news_author заменить назначение поля user_name, совпадающее по user_id и полем news_author/ Попробовал решить эту задачу при поможи INNER JOIN (год назад в примерно подобной ситуации прокатило в другом проекте). Составил вот такой запрос:
Но при выполнении данного запроса возвращается 0 строк. Подскажите, плз, как правильно решить поставленную задачу. Версия MySQL - 5.0.45 |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
возможно, у тебя и нету совпадений news.news_author = user.user_id? тип данных в означенных полях совпадает? числовой? если вдруг каким-то чудом - строковый, то какие charset?
кроме того, у тебя запрос не удовлетворяет условию , потому как у тебя напрочь отсутствует сортировка по дате. немного подкорректировав твой запрос, получаем
впрочем, это все касаемо стиля и отказоустойчивости запроса(escaping при помощи обратных апострофов). ответить на вопрос, почему же результат - ноль строк, не представляется возможным. либо он и должен вернуть ноль строк, либо у тебя не относящаяся к структуре запроса проблема, вроде указание не той БД или неверный вывод результатов запроса. |
|||
|
||||
different |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 3.4.2008 Репутация: нет Всего: нет |
Про отсутсвие сортировки по дате в приведенном мной варианте я знал - просто для начала тестировал полный вывод данных из тестовой таблице. Если бы заработало - потом бы добавил сортировку и LIMIT 20 ( осеовном всегда так запросы строю, по частям).
По типам данных - всё нормально, оба поля (user.user_id и news.news_author) имеют одинаковый тип 'int(10)'. Совпадающие данные есть, проверил не один раз. Протестил на локальном сервере вараинт запроса, который ты мне написал - не работает. Все так же возвращает 0. Протестил на хостинге (там тоже версия мускуля 5.0.45), там отлично работает. Придётся переставлять локальный сервер, видимо что-то при настройке недокрутил (или наоборот перекрутил). Спасибо за помощь. |
|||
|
||||
tolkien |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 5.4.2008 Репутация: нет Всего: 4 |
Надо сделать так
SELECT n.news_author, (SELECT user_name FROM user WHEERE user_id = n.news_author) as user_name, date_format(n.news_date, '%d.%m.%Y')as 'news_date1', n.news_body AS news_body, n.news_title FROM news n LIMIT 20 |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MySQL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |