0

3 つのテーブルから情報を取得する検索クエリがあります 2 つのテーブルから情報を取得するようにクエリを作成しましたが、3 つ目のテーブルを結合できるかどうかわかりません

SELECT *
FROM articles
INNER JOIN terms
ON articles.ArticleID = terms.RelatedID AND terms.TermType = 'article'

3番目のクエリは

SELECT * FROM categories where CategoryID in (something)

何かが「3,5,8」のような値を持つ記事テーブルのフィールドです

この 2 つのクエリを 1 つのクエリにまとめたいのですが、1 つのクエリで実行できるかどうかわかりません

4

2 に答える 2

1

あなたのスキーマを見ずに(これは役に立ちます)、いくつかのサンプルデータはこのクエリを試してください

選択する *
FROM カテゴリ、記事
内部結合用語
オン (articles.ArticleID = terms.RelatedID AND terms.TermType = 'article')
どこ
FIND_IN_SET(categories.CategoryID,articles.categories)

ここに定義がありますFIND_IN_SET()

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set

于 2012-10-03T23:32:13.530 に答える
0

私があなたを正しく理解していれば。記事ごとに複数のカテゴリがあり、カテゴリIDはすべて連結された文字列として保存されているようです。

SELECT A.*
FROM articles A
INNER JOIN terms T on A.ArticleID = T.RelatedID AND T.TermType = 'article'
LEFT JOIN categories C on C.CategoryID IN (3,5,8 OR A.CategoryIDs)
GROUP BY C.CategoryName

複数のカテゴリがある場合とない場合があるため、LEFT JOINを使用します。カテゴリ別にグループ化して、異なるカテゴリの記事のペアを取得し、CONCAT()を使用して必要に応じて記事レコードを再結合できます。

于 2012-10-03T23:34:19.010 に答える