2010-06-08 4 views
0

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

Таблицы настроить что-то вроде этого:

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

Tag_Table 
    Tag_ID | Name ... 

Tag_Intersect_Table 
    Tag_ID | Article_ID 

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

ответ

2

Вы ищете то, что называется в 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 и заголовок будут повторяться снова и снова для каждого тега. Если вы запрашиваете только одну статью и хотите получить только имена всех тегов, вы можете ограничить список SELECT только TT.name.

+0

+1 за то, что бил меня! – RobertPitt

Смежные вопросы