如何将子表记录和主表记录在同一行显示
2012-07-04 15:29
337 查看
CREATE TABLE table1
(
id bigint NOT NULL,
name character varying(50),
CONSTRAINT table1_pkey PRIMARY KEY (id )
)
WITH (
OIDS=FALSE
);
CREATE TABLE tablesub1
(
dbid bigint NOT NULL,
reftableid bigint,
name character varying(50),
value character varying(50),
CONSTRAINT tablesub1_pkey PRIMARY KEY (dbid ),
CONSTRAINT tablesub1_reftableid_fkey FOREIGN KEY (reftableid)
REFERENCES table1 (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
OIDS=FALSE
);
table1
id name
1;"jack"
2;"jack1"
3;"jack2"
4;"jack3"
tablesub1
dbid refertableid name value
1;1;"p_task_name";"a"
2;1;"due_date";"b"
3;2;"p_task_name";"c"
4;2;"due_date";"d"
SELECT mainTable.id,mainTable.name, name3,value3, name4,value5
FROM (
SELECT id,name,name2 as name3 ,value as value3
FROM (
SELECT a1.*,a2.name as name2, a2.value as value
FROM table1 a1
LEFT JOIN tablesub1 a2 ON a1.id=a2.reftableid
) a
WHERE a.name2 = 'p_task_name'
) mainTable
LEFT JOIN (
SELECT id,name,name2 AS name4 ,value AS value5
FROM (
SELECT b1.*,b2.name AS name2, b2.value AS value
FROM table1 b1
LEFT JOIN tablesub1 b2 ON b1.id=b2.reftableid
) b
WHERE b.name2 = 'due_date'
) leftjoinTable
ON mainTable.id = leftjoinTable.id
结果
1;"jack";"p_task_name";"a";"due_date";"b"
2;"jack1";"p_task_name";"c";"due_date";"d"
(
id bigint NOT NULL,
name character varying(50),
CONSTRAINT table1_pkey PRIMARY KEY (id )
)
WITH (
OIDS=FALSE
);
CREATE TABLE tablesub1
(
dbid bigint NOT NULL,
reftableid bigint,
name character varying(50),
value character varying(50),
CONSTRAINT tablesub1_pkey PRIMARY KEY (dbid ),
CONSTRAINT tablesub1_reftableid_fkey FOREIGN KEY (reftableid)
REFERENCES table1 (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
OIDS=FALSE
);
table1
id name
1;"jack"
2;"jack1"
3;"jack2"
4;"jack3"
tablesub1
dbid refertableid name value
1;1;"p_task_name";"a"
2;1;"due_date";"b"
3;2;"p_task_name";"c"
4;2;"due_date";"d"
SELECT mainTable.id,mainTable.name, name3,value3, name4,value5
FROM (
SELECT id,name,name2 as name3 ,value as value3
FROM (
SELECT a1.*,a2.name as name2, a2.value as value
FROM table1 a1
LEFT JOIN tablesub1 a2 ON a1.id=a2.reftableid
) a
WHERE a.name2 = 'p_task_name'
) mainTable
LEFT JOIN (
SELECT id,name,name2 AS name4 ,value AS value5
FROM (
SELECT b1.*,b2.name AS name2, b2.value AS value
FROM table1 b1
LEFT JOIN tablesub1 b2 ON b1.id=b2.reftableid
) b
WHERE b.name2 = 'due_date'
) leftjoinTable
ON mainTable.id = leftjoinTable.id
结果
1;"jack";"p_task_name";"a";"due_date";"b"
2;"jack1";"p_task_name";"c";"due_date";"d"
相关文章推荐
- gridview如何将一行记录显示为两行
- gridview如何将一行记录显示为两行
- Struts迭代问题解决:如何在一行显示多个记录(同一字段)
- SQLServer中如何将一个字段的多个记录值合在一行显示
- SQLServer中如何将一个字段的多个记录值合在一行显示
- 嵌套子表(dx),如何根据从表合计数显示主表记录的颜色
- SQLServer中如何将一个字段的多个记录值合在一行显示
- 如何让div它们在一行显示
- 在ASP.NET 2.0中操作数据之三十一:使用DataList来一行显示多条记录
- 添加数据记录成功后,如何自动显示该条记录于DBGrid中?
- 如何把答题记录显示到页面上去
- 如何将一列中所有的值 一行显示(SQL)
- 记录:java执行mysql语句查询字段类型:timestamp返回页面显示会多出个 .0,自己如何处理的
- JAVA如何实现读取文件最后一行记录,在文件的结尾追加记录
- 如何让任务栏一行同时显示日期和时间
- 分组报表中,如何让组名字段只显示中间的一行
- 【我的Android进阶之旅】Android Studio查看Logcat时,如果一行Log太长如何换行显示?
- 如何让div它们在一行显示
- 如何让<s:doubleselect>标签的两个下拉框在一行显示
- Matlab如何在同一行中混合显示字符串和数值变量