1

テーブルを2つ作りました。最初のテーブルは、ファイルのメタデータを保持します。

create table filemetadata (
id varchar(20) primary key ,
filename varchar(50),
path varchar(200),
size varchar(10),
author varchar(50)
) ;

+-------+-------------+---------+------+---------+
| id    | filename    | path    | size | author  | 
+-------+-------------+---------+------+---------+
| 1     | abc.txt     | c:\files| 2kb  | eric    | 
+-------+-------------+---------+------+---------+
| 2     | xyz.docx    | c:\files| 5kb  | john    | 
+-------+-------------+---------+------+---------+
| 3     | pqr.txt     |c:\files | 10kb | mike    | 
+-------+-------------+---------+------+---------+

2 番目のテーブルには、上記のテーブルの特定のファイルに関する「お気に入り」の情報が含まれています。

create table filefav (
fid varchar(20) primary key ,
id varchar(20),
favouritedby varchar(300),
favouritedtime varchar(10),
FOREIGN KEY (id) REFERENCES filemetadata(id) 
) ;

+--------+------+-----------------+----------------+
| fid    | id   | favouritedby    | favouritedtime | 
+--------+------+-----------------+----------------+
| 1      | 1    | ross            | 22:30          | 
+--------+------+-----------------+----------------+
| 2      | 1    | josh            | 12:56          | 
+--------+------+-----------------+----------------+
| 3      | 2    | johny           | 03:03          | 
+--------+------+-----------------+----------------+
| 4      | 2    | sean            | 03:45          | 
+--------+------+-----------------+----------------+

ここで、「id」は外部キーです。2 番目の表は、どのユーザーがどのドキュメントをお気に入りとしてマークしたかを示しています。たとえば、id = 1 で表されるファイル abc.txt は、ross と josh によってお気に入りとしてマークされています (お気に入りの列を参照)。 .

だから私がしたいのは、次のように情報を示すテーブル/ビューを取得することです-

+-------+-------------+---------+------+---------+---------------+
| id    | filename    | path    | size | author  | favouritedby  |
+-------+-------------+---------+------+---------+---------------+
| 1     | abc.txt     | c:\files| 2kb  | eric    | ross, josh    |
+-------+-------------+---------+------+---------+---------------+
| 2     | xyz.docx    | c:\files| 5kb  | john    | johny, sean   |
+-------+-------------+---------+------+---------+---------------+
| 3     | pqr.txt     |c:\files | 10kb | mike    | NULL          |
+-------+-------------+---------+------+---------+---------------+

どうすればこれを達成できますか?

4

3 に答える 3

3

使用しますJOIN(私の頭の上から、チェックは行われません):

SELECT filemetadata.id, filename, path, size, author, GROUP_CONCAT(favouritedby) 
FROM filemetadata 
LEFT JOIN filefav ON filemetadata.id=filefav.id GROUP BY filemetadata.id
于 2013-07-11T07:36:21.927 に答える
2

Select A.*,B.favouritedby FROM filemetadata A Left join (Select id,Group_Concat(favouritedby) from filefav group by id) B ON A.Id=B.ID

于 2013-07-11T07:38:28.587 に答える
-1

2 つのテーブルの UNION を作成するビューを作成します。

CREATE VIEW filefavs AS
SELECT * FROM filemetadata 
UNION
SELECT * FROM filefav 
于 2013-07-11T07:34:04.887 に答える