0

以下の複数の表からサブメニューを読み取ることができるように、メニュー構造を持つWebサイトで作業しています サンプルメニューの例

ここに画像の説明を入力

pg_Pages、art_Article、art_Categories、Magazine などのいくつかのテーブルがあり、各テーブルには pg_Pages テーブルに PK を持つ FK PageID があります。

これらのテーブルからデータを読み取り、各リンクが正しいページを指す階層メニュー構造を作成する SQL クエリを作成したいと考えています。

次のような href の一部としていくつかのクエリ文字列を渡す必要があるかもしれませんPageID, LanguageID, IssueID and CategoryID

サンプルリンク

Home = Default.aspx?LanguageId=1&IssueID=101&PageID=1

About Us = Page.aspx?LanguageId=1&IssueID=101&PageID=2

Categories = Article-Category.aspx?LanguageId=1&IssueID=101&PageID=6

--Politics = Article-Category.aspx?LanguageId=1&IssueID=101&PageID=6&CategoryID=1

--Economy= Article-Category.aspx?LanguageId=1&IssueID=101&PageID=6&CategoryID=2

--Business= Article-Category.aspx?LanguageId=1&IssueID=101&PageID=6&CategoryID=16

Multimedia = Multimedia.aspx?LanguageId=1&IssueID=101&PageID=10

--Video= Video.aspx?LanguageId=1&IssueID=101&PageID=11

エラーの余地のない最善の方法でこれを処理する方法がわかりません。別のクエリ文字列を別のメニューに渡す必要があるため、このアプローチの処理方法が少し混乱しています。これを処理するには、Union を使用して複数の SQL クエリを作成する必要があります。または何か違う。asp.net Web サイトにこれが必要です

また、サンプルの SQL クエリを追加しました。 & 各テーブルからの出力

SQL

SELECT PageId AS ParentID,SUBSTRING(PageName,0,20) AS PARENT_MENU,SUBSTRING(PageInternalLinkURL,0,24) AS PageHandler, PageLinkPosition,SUBSTRING(PageLayoutPosition,0,14) AS MENU_Type,PageLangID,PageInheritance  FROM pg_Pages

SELECT p.PageID as ParentID, SUBSTRING(c.ArticleCategoryName,0,20) AS CHILD_MENU,SUBSTRING(p.PageInternalLinkURL,0,24) AS PageHandler,              ArticlePostion,ArticleID AS CHILDID,c.ArticleCategoryID,IssueID,LanguageID FROM art_Articles a JOIN art_Category  c ON a.ArticleCategoryID = c.ArticleCategoryID
JOIN pg_pages p ON p.PageID = a.PageID

SELECT p.PageID AS ParentID, IssueCode as CHILD_MENU,SUBSTRING(p.PageInternalLinkURL,0,24) AS PageHandler, m.IssueCode,IssueID AS CHILDID,CurrentIssue,IssueDate,LangID FROM Magazine m JOIN pg_pages p ON m.PageID = p.PageID 

SELECT p.PageID AS ParentID, SUBSTRING(c.ArticleCategoryName,0,20) AS CHILD_MENU,SUBSTRING(p.PageInternalLinkURL,0,24) AS PageHandler, LangID,ArticleCategoryID AS CHILDID FROM art_Category c JOIN pg_Pages p ON c.PageID = p.PageID 

出力

ParentID    PARENT_MENU          PageHandler              PageLinkPosition MENU_Type      PageLangID  PageInheritance
----------- -------------------- ------------------------ ---------------- -------------- ----------- ---------------
1           Home                 Default.aspx             10               TopMenu        1           0
2           About Us             Page.aspx                20               TopMenu        1           0
3           News                 News.aspx                30               TopMenu        1           0
4           Publication          Publication.aspx         40               TopMenu        1           0
5           Articles             Articles.aspx            20               TopMenu        1           0
6           Categories           Article-Category.aspx    25               TopMenu        1           0
10          Multimedia           Multimedia.aspx          60               TopMenu        1           0
11          Video                Videos.aspx              10               SubMenu        1           10
12          Archive              Default.aspx             40               TopMenu        1           0

ParentID    CHILD_MENU           PageHandler              ArticlePostion CHILDID     ArticleCategoryID IssueID     LanguageID
----------- -------------------- ------------------------ -------------- ----------- ----------------- ----------- -----------
5           Politics             Articles.aspx            10             12          1                 1           1
5           Politics             Articles.aspx            10             13          1                 3           1
5           Politics             Articles.aspx            10             14          1                 4           1
5           Politics             Articles.aspx            1              15          1                 5           1
5           Politics             Articles.aspx            20             16          1                 5           1
5           Business             Articles.aspx            30             17          16                5           1
5           Group News           Articles.aspx            40             18          6                 5           1
5           Infrastructure       Articles.aspx            50             23          17                5           1
5           Group News           Articles.aspx            60             24          6                 5           1
5           Book Review          Articles.aspx            70             25          18                5           1


ParentID    CHILD_MENU  PageHandler              IssueCode   CHILDID     CurrentIssue IssueDate               LangID
----------- ----------- ------------------------ ----------- ----------- ------------ ----------------------- -----------
12          106         Default.aspx             106         1           0            2012-09-01 00:00:00.000 1
12          106         Default.aspx             106         2           1            2012-09-01 00:00:00.000 2
12          102         Default.aspx             102         3           1            2011-11-01 00:00:00.000 1
12          103         Default.aspx             103         4           1            2012-02-01 00:00:00.000 1
12          109         Default.aspx             109         5           1            2012-12-01 00:00:00.000 1


ParentID    CHILD_MENU           PageHandler              LangID      CHILDID
----------- -------------------- ------------------------ ----------- -----------
6           Politics             Article-Category.aspx    1           1
6           Economy              Article-Category.aspx    1           2
6           Culture              Article-Category.aspx    1           3
6           Sports               Article-Category.aspx    1           4
6           xxxxxxxxxxxxxxxxxxx  Article-Category.aspx    1           5
6           Group News           Article-Category.aspx    1           6
6           People               Article-Category.aspx    1           7
6           Editorial Message    Article-Category.aspx    1           8
6           Chairman's Message   Article-Category.aspx    1           9
6           Business             Article-Category.aspx    1           16
6           Infrastructure       Article-Category.aspx    1           17
6           Book Review          Article-Category.aspx    1           18
6           Finance              Article-Category.aspx    1           19
6           Lifestyle            Article-Category.aspx    1           20
6           Others               Article-Category.aspx    NULL        21
4

2 に答える 2

1

あなたの質問のとおりです....

-with句でSQLクエリを作成し、すべてのレコードを含む単一のテーブルを作成します。その後、HTMLテーブルメニューを選択します...ulタグセットのメインメニュー項目で(データリーダーなどのコントロールを使用できます)簡単な方法です....

その後、取得できない場合はお知らせください...私はこのタイプのメニューを作成しました....サンプルコードを提供します....

于 2013-01-02T12:23:38.257 に答える
0

メニューの構築を処理するには、さまざまな方法があります。

  • すべての難しい作業を行うストアド プロシージャを作成します。
  • データベースからデータを選択し、アプリケーション コードで文字列を作成します。
  • 「make」時に含めることができるデータベースからファイルを作成します。
  • SQL クエリですべてを実行します。

メニューのようなもので最も嫌いなオプションは、SQL クエリですべてを行うことです。もし私があなたの立場なら、「make」時にインクルードできるファイルを作成することを最初に選択すると思います。2 番目の選択肢は、データベースからデータを選択し、アプリケーション コードで文字列を作成することです。

make 時にインクルードするファイルを作成すると、パフォーマンスが向上します。必要な単純なクエリの数はそれほど重要ではないため、SQL でコーディングする方が簡単です。(実行時ではなく、「作成」時に行われます。) また、任意の複雑さのメニューを実行時のペナルティなしで処理します。(繰り返しになりますが、これは make 時に行われるためです。) ただし、メニューを変更する必要がある頻度によっては、メンテナンスの問題が発生する可能性があります。

于 2013-01-02T12:19:32.380 に答える