次のテーブルを持つデータベースがある単純な CMS システムに取り組んでいます。
Items
Contents
Langs
Items
テーブルの構造は次のとおりです。
itemId
name (for semantic reasons)
type
parent (foreign key to itemId)
アイテムは、document
またはsection
タイプのいずれかです。セクションは、親列を介してリンクされているドキュメントのコンテンツの一部です。しかし、ドキュメントは、それを にする親を持つこともできますsubpage
。
データベースからすべてのアイテムを階層的に取得するためのクエリを作成することに行き詰まりました。だから、このようなもの:
documentId => name
metaDescription => language => meta
sections => sectionId => language => title
content
uri
subPages => documentId => name
metaDescription
sections => etc...
明確にするために、Web サイトには表にある複数の言語を含めることができ、すべての言語は、表の項目にもリンクされている表Langs
のコンテンツにリンクされています。タイプの項目にリンクされたリンク列です。Contents
Items
metaDescription
content
document
1つのクエリでこれを行う方法はありますか? これは私の最初の試みでしたが、サブページでは機能しません:
SELECT
documents.itemId AS id,
documents.name AS documentName,
documents.lastModified AS lastModified,
meta.content AS metaDescription,
meta.uri AS documentUri,
sections.itemId AS sectionId,
sections.name AS sectionName,
sections.lastModified AS sectionLastModified,
contents.name AS sectionTitle,
contents.content AS sectionContent,
contents.uri AS contentUri,
contents.lastModified AS contentLastModified,
langs.name AS contentLang
FROM
SITENAME_kw_items AS documents
INNER JOIN
SITENAME_kw_contents AS meta
ON documents.itemId = meta.itemId
INNER JOIN
SITENAME_kw_items AS sections
ON sections.parent = documents.itemId
INNER JOIN
SITENAME_kw_contents AS contents
ON sections.itemId = contents.itemId
INNER JOIN
SITENAME_kw_langs AS langs
ON langs.langId = contents.langId
長い質問で申し訳ありません。皆さんが助けてくれることを願っています!