‘壹’ Hibernate中不用写sql和HQL的方式以及设置主外键的方式来实现多表查询
Hibernate中的mapping,和数据库中的主外键约束 没有绝对的联系。
即使数据库中不设置外键关联,同样可以在hibernate中设置一对多,或者多对一,多对多的映射关系,只要你的表符合外键关联的设计要求就可以。
查询可以用HQL或者Native SQL,这个看你自己选择。如果用HQL就必须进行Mapping。如果用原生SQL就需要你自己写sql语句,并将查询结果自己解析成实体类。
‘贰’ sql多表查询的问题
第一种情况查询的目标是a表,where条件里只是从b表筛选条件,所以你那样写的话(b.成绩)是查不出来的。
第二种情况查询的目标是a表和b表的内连接后的结果。
插入excel的方法是:EXEC master..xp_cmdshell 'bcp 库名.dbo.表名 out 导出文件路径 -c -q -S"数据库服务器名" -U"数据库用户名" -P"数据库用户密码"'
如果提示xp_cmdshell不能用的话,需要先在外围应用配置器启动这个功能
如果是查询结果这样写就可以了:EXEC master..xp_cmdshell 'bcp "查询语句" queryout 导出文件路径 -c -q -S"数据库服务器名" -U"数据库用户名" -P"数据库用户密码"'
‘叁’ sql 语句多表查询问题
--测试数据,别在正式数据库中运行,以免删除同名的其他表
IF NOT OBJECT_ID('会员表') IS NULL
DROP TABLE 会员表
GO
CREATE TABLE 会员表
(ID INT IDENTITY(1,1),
NAME CHAR(100),
SEX INT)
GO
INSERT INTO 会员表(NAME,SEX)
SELECT 'a',0
UNION ALL
SELECT 'b',0
UNION ALL
SELECT 'c',0
UNION ALL
SELECT'd ',1
GO
IF NOT OBJECT_ID('登陆表') IS NULL
DROP TABLE 登陆表
GO
CREATE TABLE 登陆表
(ID INT IDENTITY(1,1),
userid INT,
IP INT,
TIME DATETIME)
GO
INSERT INTO 登陆表(userid,ip,time)
SELECT '1','1','2010-05-08'
UNION ALL
SELECT '1','2','2010-05-01'
UNION ALL
SELECT '2','3','2010-05-02'
UNION ALL
SELECT '3','4','2010-05-03'
UNION ALL
SELECT '2', '5',' 2010-05-04'
GO
SELECT B.ID,CASE WHEN B.SEX=0 THEN '男'ELSE '女'END 'SEX',A.IP,A.TIME FROM 登陆表 A,会员表 B
WHERE NOT EXISTS (SELECT 1 FROM 登陆表 WHERE TIME>A.TIME AND USERID=A.USERID) AND A.USERID=B.ID
‘肆’ SQL 的SELECT多表语句查询的问题
在分组条件中,加上,业务状态
最后添加一个 order by 业务状态
,对以上表结果进行自联接,筛选出想要的字段就可以了
,详细语句就不写了,楼主自己写吧。
‘伍’ SQL多个表查询的语句怎么写
从结果来看,你只是在表1和表2做关联查询,如果有多种查询,建议你在前台程序里就分开,
比如要查卡号、姓名、币种、金额、产品号,就使用一个sql,
需要身份证号、币种的,就再写一个sql,
需要汇总客户总共的消费金额,就再另外用一个申sql,
if ..... then sql="...."
elseif ..... then sql="..."
‘陆’ Sql多表查询,怎么做
根据你的查询结果要求,可以根据一下几个步骤确定多表查询语句的写法:
1、要显示所有学生信息、班级、年级等信息,则需以主表1为主记录,其他表通过外连接的方式进行关联;
2、LEFT JOIN 关键字会从左表那里返回所有的行,即使在右表中没有匹配的行,确定主表之后,其他关联表使用LEFT JOIN;
3、拼接SQL语句,需要确定关联字段主表1与表2的关联为主表1.studentid=表2.studentid,
主表1与表3的关联为主表1.gradId=表3.gradId,主表1与表4的关联为主表1.classId=表4.classId
4、具体语句为:
SELECT 表1.ID, 表2.STUDENTNAME,表3.GRADNAME,表4.CLASSNAME
FROM 表1
LEFT JOIN 表2 ON 表1.STUDENTID = 表2.STUDENTID
LEFT JOIN 表3 ON 表1.GRADID = 表3.GRADID
LEFT JOIN 表4 ON 表1.CLASSID= 表4.CLASSID
‘柒’ SQL如何实现多表查询
大体上的方法有两种
(1)联合查询
select dbo.vipcard.cardno,........,dbo.viptype.typename as cardtype from dbo.vipcard inner join dbo.viptype on dbo.vipcard.cardtype=dbo.viptype.ctypeid
(2)子查询
select dbo.vipcard.cardno,........,(select typename from viptype where dbo.vipcard.cardtype=dbo.viptype.ctypeid) as cardtype from dbo.vipcard
‘捌’ 多表查询,除了在SQL语句中级联还有没有其它方式
我给你写一个嵌套的查询!不用主外键但是要求表中的值必须是一样的!
第一种
select xh,yw,(select xx from b) from a
where (select xh from b)=(select xh from a)
第二种
select Aa.xh,Aa.yw,Bb.xx from a as Aa,b as Bb where Aa.xh=Bb.xh
这样写!就是你的两个表种根本没有主外键也可以查询!
‘玖’ SQL多表查询语句怎么写
SQL多表查询语句的步骤如下:
我们需要准备的材料分别是:电脑、sql查询器。
1、首先,打开sql查询器,连接上相应的数据库表,例如m1表和m2表。
‘拾’ sql多表查询为什么不建议超过3张表
sql多表查询不建议超过3张表,主要是因为超过3张表进行与查询的情况下会产生巨量笛卡尔集,对于系统运算资源消耗很大,会影响数据库运行效率,所以,不建议超过3张表的sql多表查询。