查看: 1333|回复: 7
|
将几个Table合起来
[复制链接]
|
|
我有两个Table
- Person
- -ID
- -Name
- Detail
- -ID (person ID)
- -Field
- -Value
复制代码
例子
- Person (1, Sirius)
- Person (2, 网管)
- Detail (1, Address, 'My house')
- Detail (1, Tel, '994')
- Detail (1, Email, 'xxx@xxx.com')
- Detail (2, Address, 'His house')
- Detail (2, Tel, '100')
复制代码
请问有没有办法用SQL 将他们合起来,生成一个临时的Table,比如:
- New_Table
- -ID : 1
- -Name : Sirius
- -Address : My House
- -Tel : 994
- -Email : xxx@xxx.com
复制代码 |
|
|
|
|
|
|
|
发表于 15-9-2006 02:01 PM
|
显示全部楼层
请问DETAIL里的FIELD VALUE是FIX的吗?如ADDRESS,TEL,NAME?
如果是FIX的,那可以用CASE或UNION来做,但SQLSTATEMENT比较长
或者用以下的sub query也可以
SELECT A.ID,A.Address,B.Name FROM
(SELECT D.ID,D.Field as Address FROM Person P,Detail D WHERE P.ID=D.ID AND D.Field='Address') A,
(SELECT D.ID,D.Field as Name FROM Person P,Detail D WHERE P.ID=D.ID AND D.Field='Name') B
WHERE A.ID=B.ID
不知道我有没有误会你的问题^^
[ 本帖最后由 max5007 于 15-9-2006 02:36 PM 编辑 ] |
|
|
|
|
|
|
|
楼主 |
发表于 15-9-2006 02:54 PM
|
显示全部楼层
原帖由 max5007 于 15-9-2006 02:01 PM 发表
请问DETAIL里的FIELD VALUE是FIX的吗?如ADDRESS,TEL,NAME?
如果是FIX的,那可以用CASE或UNION来做,但SQLSTATEMENT比较长
或者用以下的sub query也可以
SELECT A.ID,A.Address,B.Name FROM
(SELECT D. ...
不是Fixed的,但是每间公司一套,基本上可以当作Fixed的来看。
先谢谢了,我还在消化你的SQL statement。 |
|
|
|
|
|
|
|
发表于 15-9-2006 03:34 PM
|
显示全部楼层
原帖由 max5007 于 15-9-2006 02:01 PM 发表
请问DETAIL里的FIELD VALUE是FIX的吗?如ADDRESS,TEL,NAME?
如果是FIX的,那可以用CASE或UNION来做,但SQLSTATEMENT比较长
或者用以下的sub query也可以
SELECT A.ID,A.Address,B.Name FROM
(SELECT D.ID,D.Field as Address FROM Person P,Detail D WHERE P.ID=D.ID AND D.Field='Address') A,
(SELECT D.ID,D.Field as Name FROM Person P,Detail D WHERE P.ID=D.ID AND D.Field='Name') B
WHERE A.ID=B.ID
.
有点问题。。不是d.value 咩?。。 |
|
|
|
|
|
|
|
发表于 15-9-2006 03:48 PM
|
显示全部楼层
原帖由 tensaix2j 于 15-9-2006 03:34 PM 发表
有点问题。。不是d.value 咩?。。
o对。。是D.Value哈哈。。写错了。谢谢。。 |
|
|
|
|
|
|
|
楼主 |
发表于 15-9-2006 04:57 PM
|
显示全部楼层
tensaix2j真细心,我都没有发现。
放心,小弟抄功课是很专心的。我消化了max5007的SQL 后再来写的。 |
|
|
|
|
|
|
|
发表于 15-9-2006 05:04 PM
|
显示全部楼层
原帖由 Sirius 于 15-9-2006 04:57 PM 发表
tensaix2j真细心,我都没有发现。
放心,小弟抄功课是很专心的。我消化了max5007的SQL 后再来写的。
我这里没有table给我测试。。所以不小心哈哈。
如果你的field是不固定的。。那可以先用loop,然后再generate那SQL STATEMENT^^ |
|
|
|
|
|
|
|
发表于 20-9-2006 03:32 PM
|
显示全部楼层
VFP 的 Query 自动生成的 SQL 是
SELECT Detail.ID, Person.Name, Detail.Field, SUM(Detail.Value);
FROM Detail, Person;
WHERE Detail.ID=Person.ID;
GROUP BY Detail.ID, Person.Name, Detail.Field;
ORDER BY Detail.ID, Person.Name, Detail.Field;
INTO CURSOR TempCursor
DO (_GENXTAB) WITH 'Query',.t.,.t.,.t.,,,,.t.,0,.t.
_GENXTAB 是 VFP 内制的功能 Function/Procedure 用于 Cross-Tab 型 SQL |
|
|
|
|
|
|
| |
本周最热论坛帖子
|