0

学術論文のアーカイブを作成しています。各論文の著者は 1 人でも複数でもかまいません。次の方法でテーブルを作成しました。

  • 表 1: PaperInfo - 各行には用紙に関する情報が含まれます
  • 表 2: PaperAuthor - 2 つの列のみ: PaperID と AuthorID を含む
  • 表 3: AuthorList - 著者情報が含まれています。

著者が所属する大学のリストを含む表 4 にリンクされている表 4 もありますが、複雑になりすぎる場合に備えて、ここでは省略します。

3 つのテーブルすべてをリンクするクエリを作成し、レコードセットの用紙情報を次のような列でテーブルに表示したいと考えています。

  • 論文タイトル
  • 論文著者

「論文著者」列には複数の著者が含まれる場合があります。

次のクエリを作成しました。

SELECT a.*,b.*,c.*
FROM PaperInfo a, PaperAuthor b, AuthorList c
WHERE a.PaperID = b.PaperID AND b.AuthorID = c.AuthorID

これまでのところ、各行で得られた結果は、行ごとに 1 人の作成者です。1 つの列により多くの著者を含めたいと考えています。とにかくこれを行うことはできますか?

注: データベースとして Access 2010 を使用しています。

4

5 に答える 5

1

Access 2010 を使用しているとのことなので、この質問を参照してください: ms-access に group_concat 関数はありますか?

特に、 http://www.rogersaccesslibrary.com/forum/generic-function-to-concatenate-child-records_topic16&SID=453fabc6-b3z9-34z6zb14-a78f832z-19z89a2c.htmlを指す投稿を読んでください。

おそらくカスタム関数を実装する必要がありますが、2 番目の URL は探しているものを実行します。

于 2013-09-30T12:26:11.900 に答える
0

論文あたりの著者の最大数がわかっている場合 (たとえば、3 人または 4 人)、3 重または 4 重の左結合で問題を解決できます。

于 2013-09-30T12:24:28.753 に答える
0

この機能は SQL 標準の一部ではありませんが、さまざまなベンダーがソリューションを提供しています。たとえば、Pivo​​t Table with many to many tableMySQL ピボット テーブルを参照してください。

于 2013-09-30T12:09:53.850 に答える
-1

あなたが求めているのは内部結合です。

SQL JOIN 句は、それらの間の共通フィールドに基づいて、2 つ以上のテーブルの行を結合するために使用されます。最も一般的な結合のタイプは、SQL INNER JOIN (単純な結合) です。SQL INNER JOIN は、結合条件が満たされた複数のテーブルからすべての行を返します。

http://www.w3schools.com/sql/sql_join.asp

内部結合をグループと組み合わせて、結果で 1 つの論文を多くの著者に与えることができます。

GROUP BY ステートメントは、集計関数と組み合わせて使用​​され、結果セットを 1 つ以上の列でグループ化します。

http://www.w3schools.com/sql/sql_groupby.asp

于 2013-09-30T12:04:38.007 に答える