老师,这个问题要怎么解决?

老师,这个问题要怎么解决?

老师,下面两个表中,要求顾客名字和艺术品被卖了至少两次,这个怎么写代码?谢谢

CREATE TABLE pur(

 pId int unsigned auto_increment key,

 cusId int unsigned,

 artTitle varchar(50) not null,

 pDate date not null,

 pPrice float(8,2) not null

);

CREATE TABLE cus(

cusId int unsigned auto_increment key,

cusName varchar(20) not null unique,

gender enum('Male','Female') not null,

mobile varchar(20) not null,

DOB date not null,

addr varchar(80) not null,

creditLimit float(8,2) not null

);


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,这个是由于sql_mode中使用ONLY_FULL_GROUP_BY模式造成的,建议同学执行如下两句代码:

set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

再执行sql语句试试。

祝:学习愉快~

好帮手慕阿满 2020-06-16 14:47:54

同学你好,不是很明白同学的意思。顾客名字和艺术品被卖了至少两次,是指向数据库中插入数据还是查询数据。

如果是插入数据,同学插入某个顾客的信息以及插入多次艺术品的购买记录即可。

如果是查询被卖了至少两次的艺术品以及顾客名字,可以将两表连接,通过艺术品分组,统计被卖了至少2次的艺术品以及顾客信息,参考如下语句:

SELECT cus.cusName,pur.artTitle 
FROM pur 
join cus 
on pur.cusId = cus.cusId 
GROUP BY pur.artTitle 
HAVING COUNT(pur.artTitle)>=2;

祝:学习愉快~

  • 提问者 宝慕林9372888 #1
    谢谢老师,是查询。但是我刚才输入,为什么会报错 14:50:41 SELECT cus.cusName,pur.artTitle FROM pur join cus on pur.cusId = cus.cusId GROUP BY pur.artTitle HAVING COUNT(pur.artTitle)>=2 LIMIT 0, 1000 Error Code: 1055. Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'cuspur.cus.cusName' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by 0.0074 sec
    2020-06-16 14:52:22
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师