Нужна помощь в запросах к двум базам данных (впервые пытаюсь это сделать)

0

У меня есть две базы данных, с которыми мне нужно работать, db_site и db_forum (это общие имена, FYI).

db_site имеет таблицу main-news, которая имеет поле forumurl, в котором содержится идентификатор потока форума и поле views, которое содержит текущие просмотры страниц для статьи в базе данных. В db_forum есть таблица, называемая forum_threads, которая имеет поле tid и поле ответы.

У меня есть две вещи, которые мне нужно сделать: один использует только ответы, а другой - ответы и представления. Я предполагаю, что, как только первое выяснится, последнее не будет намного больше, чем добавление некоторых дополнительных частей, поэтому я в настоящее время обеспокоен первым.

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

SELECT
    db_forum.forum_threads.replies AS replies
FROM
    `db_forum.forum_threads` AS f,
    `db_site.main-news` AS s
WHERE
    f.tid = s.forumurl

Это грубое предположение, из того, что я могу найти в Интернете, чтобы делать этот тип запроса. Любая помощь приветствуется.:)

  • 0
    Я изменил «комментарии» на «ответы» в третьем абзаце, так как я предполагаю, что db_forum.forum_threads.replies - это то, на что вы ссылались. Дайте мне знать, если это неправильно. Также отредактировал заголовок, чтобы было понятно, что это перекрестный запрос, с которым у вас возникли проблемы. :)
  • 0
    Вы могли бы сократить заголовок до «Запрос по двум базам данных».
Показать ещё 1 комментарий
Теги:

2 ответа

2
Лучший ответ

Прежде всего, вы должны правильно отложить свой код SQL. Эта длинная строка почти нечитаема.

SELECT
    db_forum.forum_threads.replies AS replies
FROM
    `db_forum.forum_threads` AS f,
    `db_site.main-news` AS s
WHERE
    f.tid = s.forumurl

Затем используйте псевдонимы таблицы "f" и "s". Вы ввели их, поэтому вы должны их использовать:

SELECT
    f.replies AS replies
FROM
    `db_forum.forum_threads` AS f,
    `db_site.main-news` AS s
WHERE
    f.tid = s.forumurl

Наконец, вы должны удалить ненужное цитирование:

SELECT
    f.replies AS replies
FROM
    db_forum.forum_threads AS f,
    db_site.main-news AS s
WHERE
    f.tid = s.forumurl
  • 0
    Полезные рекомендации, да. Но они на самом деле не решают вопрос ...
  • 0
    Извините за отсутствие отступов, в открытом PHP-коде он был в одной строке, и я не заметил проблем с форматированием в SO. Не было точно об использовании ф. в начале, так как я не пробовал что-то подобное раньше - приятно знать, что это может работать так. Я попробую этот код позже сегодня вечером и проверю, работает ли он (если это произойдет, я отмечу это как ответ).
Показать ещё 2 комментария
0

Если имена полей указывают на их функцию, то f.tid ссылается на столбец идентичности, а s.forumurl - нет. Обычно s.formurl в этом случае будет внешним ключом. Просто предположим.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню