有3个表
表a
aId,aName,bId,cId表b
bId,bName表c
cId,cName现在要将b,c 2个表中的bId,cId写到a表中去,写入之前 a表中的bId,cId都是空值
界面上初始的列表要求显示:
aId,aName,bName,cName通过修改获取到bId,bName,cId,cName 然后将bId,cId写到a表中。
问题:
初始界面列表显示时3个表的sql关联应该怎么写?
谢谢了 在线等.
表a
aId,aName,bId,cId表b
bId,bName表c
cId,cName现在要将b,c 2个表中的bId,cId写到a表中去,写入之前 a表中的bId,cId都是空值
界面上初始的列表要求显示:
aId,aName,bName,cName通过修改获取到bId,bName,cId,cName 然后将bId,cId写到a表中。
问题:
初始界面列表显示时3个表的sql关联应该怎么写?
谢谢了 在线等.
select a.aid,a.aname,b.bname,c.cname from a,b,c where a.bid = b.bid and a.cid = c.cid;
如果需要用hibernate,请说明!
这个语句是当a表中的 bId,cId 有值的时候可以用 但是如果这2个字段没有写入值之前 应该怎么查?
是不是要在a表中把b表数据和c表数据整合成一条数据啊?!还是怎么的?
例如:
a表:
aId | aName | bId | cId
1 | a | 1 | 2
b表:
bId | bName
1 | a
c表:
cId | cName
1 | b
2 | a
例如结束。
是否是这要求啊?
a.aid,
a.aname,
b.bname,
c.cname
from
a left join b on a.bid = b.bid
left join c on a.cid = c.cid
直接查A表就行了 然后判断B C 是否为空 不为空就拿出name属性
如果B C 数据量的话 可以延迟加载
先插入b表,取回刚刚服务器自动生成的id值待用
再插入c表,取回刚刚服务器自动生成的id值待用
将这两个值update或insert到a表中。一旦三个表的数据都处理好了,就用楼上那些Select语句查询数据库好了。
主观臆断,人家要是根据name更新id,然后再显示呢?
select aID,aName from a
) as aa,
(
select bName from b
) as bb,
(
select cName from c
) as cc不用谢了
界面上要显示成
aId,aName,bName,cNamebName,cName分别是b表和c表中的2个字段 再没有写入a表之前 a表中的这2个字段是空的
那界面上显示列表的时候 就应该是 aId,aName,null,null当对记录进行修改的时候 就获取到bId,cId 写入到a表里 再次刷新的时候 有值的 就通过关联显示aId,aName,bName,cName 其他记录没有写入的 依然显示成aId,aName,null,null
现在就是要这种效果。
楼主试试
select a.aId,a.aName,b.bName,c.cName from a a,b b,c c where a.bid=b.bid(+) and a.cid=c.cid(+)