Нелинейный поиск в базе данных - PullRequest
0 голосов
/ 08 июня 2010

Я создаю систему статей, и каждая статья будет иметь еще один связанный с ней тег (аналогично тегам на этом сайте).

Таблицы настроены примерно так:

Article_Table
  Article_ID | Title | Author_ID |  Content | Date_Posted | IP ... 

Tag_Table
  Tag_ID | Name ...

Tag_Intersect_Table
  Tag_ID | Article_ID 

Возможно ли запросить статью и все связанные с ней теги за один вызов базы данных? Если да, то как это сделать?

1 Ответ

2 голосов
/ 08 июня 2010

Вы ищете то, что в SQL называется JOIN:

SELECT
    Article_ID, Title, TT.Name as 'Tag_Name'
  FROM
    Article_Table AT
    INNER JOIN Tag_Intersect_Table TI
      ON AT.article_id = TI.article_id
    INNER JOIN Tag_Table TT
      ON TI.tag_id = TT.tag_id
  WHERE
    article_id = @my_article_id

Это соединяет две таблицы сущностей в одну таблицу пересечений с естественным синтаксисом соединения.

Обратите внимание, что в этом наборе результатов у вас будет по одной строке для каждой комбинации тега и статьи, поэтому article_id и title будут повторяться снова и снова для каждого тега. Если вы запрашиваете только одну статью и хотите получить только имена всех тегов, вы можете ограничить список SELECT только TT.name.

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