sec.name as seccataname,
thd.name as thdcataname,
p.title,
up.hasproduct,
up.price,
up.inputdate
from userproduct up
inner join product p on up.productid=p.productid
inner join cata thd on p.catano=thd.catano
inner join cata sec on thd.upcatano= sec.catano
inner join cata fir on sec.upcatano= fir.catano ";
21 个解决方案
#1
我做了近十年的开发了,早就不做数据库网站类的东西了。最近项目需要和公司一二十岁的小伙子合作,问问他数据从哪几张表取出来的,对应关系怎么样。他丢给我一堆这样的代码。我真想扁他。
#2
难道是我不懂数据库了?难道现在就流行这样的代码?我拿出来大家帮我想想,免得回头错扁了他。
#3
哈哈
#4
真的说说,我要回去打人了
#5
我还真的怀疑自己会错怪他,我已经5年多没认真做过数据库了。所以请大家帮我看看,麻烦解释一下!
#6
SQL语句没问题,只是表之间的关系复杂
#7
楼上兄台的意思是他不是在调戏我?
#8
inner join cata thd on p.catano=thd.catano
inner join cata sec on thd.upcatano= sec.catano
inner join cata fir on sec.upcatano= fir.catano ";
这几句他一定是在调戏我了,一个表定义三个别名,fir÷sec÷thd都是一个表的别名
inner join cata sec on thd.upcatano= sec.catano
inner join cata fir on sec.upcatano= fir.catano ";
这几句他一定是在调戏我了,一个表定义三个别名,fir÷sec÷thd都是一个表的别名
#9
自己表内的upcatano=catano,然后下一行转身catano=upcatano
#10
select fir.name as topcataname,
sec.name as seccataname,
thd.name as thdcataname,
p.title,
up.hasproduct,
up.price,
up.inputdate
from userproduct up
inner join product p on up.productid=p.productid
inner join cata thd on p.catano=thd.catano
inner join cata sec on thd.upcatano= sec.catano
inner join cata fir on sec.upcatano= fir.catano ";
inner join好办,不要写这么难看的代码:
个人认为容易理解些的如下:
select fir.name as topcataname,sec.name as seccataname,thd.name as thdcataname,
p.title,up.hasproduct,up.price,up.inputdate
from userproduct up,product p,cata thd,cata sec,cata fir
where up.productid=p.productid and p.catano=thd.catano and thd.upcatano= sec.catano
and on sec.upcatano= fir.catano
改写之后,还是难看,呵呵。
cata 一个表记录着三个级别的东西,却用三个字段来区分。不如考虑用两个字段来区别,一个是parent,一个是层,其实有一个parent就行了。
查找结果是用户产品的价格,注册时间以及产品名称以及三个cata(这是什么意思)级别的名称。
sec.name as seccataname,
thd.name as thdcataname,
p.title,
up.hasproduct,
up.price,
up.inputdate
from userproduct up
inner join product p on up.productid=p.productid
inner join cata thd on p.catano=thd.catano
inner join cata sec on thd.upcatano= sec.catano
inner join cata fir on sec.upcatano= fir.catano ";
inner join好办,不要写这么难看的代码:
个人认为容易理解些的如下:
select fir.name as topcataname,sec.name as seccataname,thd.name as thdcataname,
p.title,up.hasproduct,up.price,up.inputdate
from userproduct up,product p,cata thd,cata sec,cata fir
where up.productid=p.productid and p.catano=thd.catano and thd.upcatano= sec.catano
and on sec.upcatano= fir.catano
改写之后,还是难看,呵呵。
cata 一个表记录着三个级别的东西,却用三个字段来区分。不如考虑用两个字段来区别,一个是parent,一个是层,其实有一个parent就行了。
查找结果是用户产品的价格,注册时间以及产品名称以及三个cata(这是什么意思)级别的名称。
#11
楼上的理解不对吧,fir、sec、thd都是cata的别名啊?
inner join cata sec on thd.upcatano= sec.catano
inner join cata fir on sec.upcatano= fir.catano ";
这两句替换后不就是cata.upcatano=cata.catano;然后重复了一遍么?
select fir.name as topcataname,
sec.name as seccataname,
thd.name as thdcataname,
不都是选择数据库中同一字段么?
inner join cata sec on thd.upcatano= sec.catano
inner join cata fir on sec.upcatano= fir.catano ";
这两句替换后不就是cata.upcatano=cata.catano;然后重复了一遍么?
select fir.name as topcataname,
sec.name as seccataname,
thd.name as thdcataname,
不都是选择数据库中同一字段么?
#12
//原来代码
select fir.name as topcataname,
sec.name as seccataname,
thd.name as thdcataname,
p.title,
up.hasproduct,
up.price,
up.inputdate
from userproduct up
inner join product p on up.productid=p.productid
inner join cata thd on p.catano=thd.catano
inner join cata sec on thd.upcatano= sec.catano
inner join cata fir on sec.upcatano= fir.catano ";
//这是我解析出来的意思
select cata.name as topcataname,
cata.name as seccataname,
cata.name as thdcataname,
product.title,
userproduct.hasproduct,
userproduct.price,
userproduct.inputdate
from userproduct up
inner join product p on userproduct.productid=product.productid
inner join cata thd on product.catano=cata.catano
inner join cata sec on cata.upcatano= cata.catano
inner join cata fir on cata.upcatano= cata.catano ";
//进一步简化。可以得到
select
cata.name,
cata.name ,
cata.name,
product.title,
userproduct.hasproduct,
userproduct.price,
userproduct.inputdate
from userproduct
inner join product on userproduct.productid=product.productid
inner join cata on product.catano=cata.catano
inner join cata on cata.upcatano= cata.catano
inner join cata on cata.upcatano= cata.catano;
大家看看我理解正不正确?
select fir.name as topcataname,
sec.name as seccataname,
thd.name as thdcataname,
p.title,
up.hasproduct,
up.price,
up.inputdate
from userproduct up
inner join product p on up.productid=p.productid
inner join cata thd on p.catano=thd.catano
inner join cata sec on thd.upcatano= sec.catano
inner join cata fir on sec.upcatano= fir.catano ";
//这是我解析出来的意思
select cata.name as topcataname,
cata.name as seccataname,
cata.name as thdcataname,
product.title,
userproduct.hasproduct,
userproduct.price,
userproduct.inputdate
from userproduct up
inner join product p on userproduct.productid=product.productid
inner join cata thd on product.catano=cata.catano
inner join cata sec on cata.upcatano= cata.catano
inner join cata fir on cata.upcatano= cata.catano ";
//进一步简化。可以得到
select
cata.name,
cata.name ,
cata.name,
product.title,
userproduct.hasproduct,
userproduct.price,
userproduct.inputdate
from userproduct
inner join product on userproduct.productid=product.productid
inner join cata on product.catano=cata.catano
inner join cata on cata.upcatano= cata.catano
inner join cata on cata.upcatano= cata.catano;
大家看看我理解正不正确?
#13
njz168(飞龙在天) 出来说说话,是你无意看错了还是我的理解是错误的,这很关键,我已经大骂了写这段代码的人,如果真的是我理解有误,我还得跟人家道歉
#14
lyllirui(小李)
根据代码的意思,的确是要原来那样写的。
同表关联,必须用别名才能区别记录集。
关联时,并不需要表中全部内容,而是符合条件的记录集了,别名就表示该记录集的意思。
根据代码的意思,的确是要原来那样写的。
同表关联,必须用别名才能区别记录集。
关联时,并不需要表中全部内容,而是符合条件的记录集了,别名就表示该记录集的意思。
#15
把代码放在视图设计器中看一下可视化关系不就清楚了嘛!
#16
有这样的用法,不过可能是数据库设计时偷懒了。
#17
很多不同类的数据写在了同一个表的同一个字段
#18
呵呵,还蛮好玩的,lyllirui(小李)有意思的人。
#19
我看那代码没错啊!你可以用视图看一下!
#20
去扁人吧
#21
玩笑
#1
我做了近十年的开发了,早就不做数据库网站类的东西了。最近项目需要和公司一二十岁的小伙子合作,问问他数据从哪几张表取出来的,对应关系怎么样。他丢给我一堆这样的代码。我真想扁他。
#2
难道是我不懂数据库了?难道现在就流行这样的代码?我拿出来大家帮我想想,免得回头错扁了他。
#3
哈哈
#4
真的说说,我要回去打人了
#5
我还真的怀疑自己会错怪他,我已经5年多没认真做过数据库了。所以请大家帮我看看,麻烦解释一下!
#6
SQL语句没问题,只是表之间的关系复杂
#7
楼上兄台的意思是他不是在调戏我?
#8
inner join cata thd on p.catano=thd.catano
inner join cata sec on thd.upcatano= sec.catano
inner join cata fir on sec.upcatano= fir.catano ";
这几句他一定是在调戏我了,一个表定义三个别名,fir÷sec÷thd都是一个表的别名
inner join cata sec on thd.upcatano= sec.catano
inner join cata fir on sec.upcatano= fir.catano ";
这几句他一定是在调戏我了,一个表定义三个别名,fir÷sec÷thd都是一个表的别名
#9
自己表内的upcatano=catano,然后下一行转身catano=upcatano
#10
select fir.name as topcataname,
sec.name as seccataname,
thd.name as thdcataname,
p.title,
up.hasproduct,
up.price,
up.inputdate
from userproduct up
inner join product p on up.productid=p.productid
inner join cata thd on p.catano=thd.catano
inner join cata sec on thd.upcatano= sec.catano
inner join cata fir on sec.upcatano= fir.catano ";
inner join好办,不要写这么难看的代码:
个人认为容易理解些的如下:
select fir.name as topcataname,sec.name as seccataname,thd.name as thdcataname,
p.title,up.hasproduct,up.price,up.inputdate
from userproduct up,product p,cata thd,cata sec,cata fir
where up.productid=p.productid and p.catano=thd.catano and thd.upcatano= sec.catano
and on sec.upcatano= fir.catano
改写之后,还是难看,呵呵。
cata 一个表记录着三个级别的东西,却用三个字段来区分。不如考虑用两个字段来区别,一个是parent,一个是层,其实有一个parent就行了。
查找结果是用户产品的价格,注册时间以及产品名称以及三个cata(这是什么意思)级别的名称。
sec.name as seccataname,
thd.name as thdcataname,
p.title,
up.hasproduct,
up.price,
up.inputdate
from userproduct up
inner join product p on up.productid=p.productid
inner join cata thd on p.catano=thd.catano
inner join cata sec on thd.upcatano= sec.catano
inner join cata fir on sec.upcatano= fir.catano ";
inner join好办,不要写这么难看的代码:
个人认为容易理解些的如下:
select fir.name as topcataname,sec.name as seccataname,thd.name as thdcataname,
p.title,up.hasproduct,up.price,up.inputdate
from userproduct up,product p,cata thd,cata sec,cata fir
where up.productid=p.productid and p.catano=thd.catano and thd.upcatano= sec.catano
and on sec.upcatano= fir.catano
改写之后,还是难看,呵呵。
cata 一个表记录着三个级别的东西,却用三个字段来区分。不如考虑用两个字段来区别,一个是parent,一个是层,其实有一个parent就行了。
查找结果是用户产品的价格,注册时间以及产品名称以及三个cata(这是什么意思)级别的名称。
#11
楼上的理解不对吧,fir、sec、thd都是cata的别名啊?
inner join cata sec on thd.upcatano= sec.catano
inner join cata fir on sec.upcatano= fir.catano ";
这两句替换后不就是cata.upcatano=cata.catano;然后重复了一遍么?
select fir.name as topcataname,
sec.name as seccataname,
thd.name as thdcataname,
不都是选择数据库中同一字段么?
inner join cata sec on thd.upcatano= sec.catano
inner join cata fir on sec.upcatano= fir.catano ";
这两句替换后不就是cata.upcatano=cata.catano;然后重复了一遍么?
select fir.name as topcataname,
sec.name as seccataname,
thd.name as thdcataname,
不都是选择数据库中同一字段么?
#12
//原来代码
select fir.name as topcataname,
sec.name as seccataname,
thd.name as thdcataname,
p.title,
up.hasproduct,
up.price,
up.inputdate
from userproduct up
inner join product p on up.productid=p.productid
inner join cata thd on p.catano=thd.catano
inner join cata sec on thd.upcatano= sec.catano
inner join cata fir on sec.upcatano= fir.catano ";
//这是我解析出来的意思
select cata.name as topcataname,
cata.name as seccataname,
cata.name as thdcataname,
product.title,
userproduct.hasproduct,
userproduct.price,
userproduct.inputdate
from userproduct up
inner join product p on userproduct.productid=product.productid
inner join cata thd on product.catano=cata.catano
inner join cata sec on cata.upcatano= cata.catano
inner join cata fir on cata.upcatano= cata.catano ";
//进一步简化。可以得到
select
cata.name,
cata.name ,
cata.name,
product.title,
userproduct.hasproduct,
userproduct.price,
userproduct.inputdate
from userproduct
inner join product on userproduct.productid=product.productid
inner join cata on product.catano=cata.catano
inner join cata on cata.upcatano= cata.catano
inner join cata on cata.upcatano= cata.catano;
大家看看我理解正不正确?
select fir.name as topcataname,
sec.name as seccataname,
thd.name as thdcataname,
p.title,
up.hasproduct,
up.price,
up.inputdate
from userproduct up
inner join product p on up.productid=p.productid
inner join cata thd on p.catano=thd.catano
inner join cata sec on thd.upcatano= sec.catano
inner join cata fir on sec.upcatano= fir.catano ";
//这是我解析出来的意思
select cata.name as topcataname,
cata.name as seccataname,
cata.name as thdcataname,
product.title,
userproduct.hasproduct,
userproduct.price,
userproduct.inputdate
from userproduct up
inner join product p on userproduct.productid=product.productid
inner join cata thd on product.catano=cata.catano
inner join cata sec on cata.upcatano= cata.catano
inner join cata fir on cata.upcatano= cata.catano ";
//进一步简化。可以得到
select
cata.name,
cata.name ,
cata.name,
product.title,
userproduct.hasproduct,
userproduct.price,
userproduct.inputdate
from userproduct
inner join product on userproduct.productid=product.productid
inner join cata on product.catano=cata.catano
inner join cata on cata.upcatano= cata.catano
inner join cata on cata.upcatano= cata.catano;
大家看看我理解正不正确?
#13
njz168(飞龙在天) 出来说说话,是你无意看错了还是我的理解是错误的,这很关键,我已经大骂了写这段代码的人,如果真的是我理解有误,我还得跟人家道歉
#14
lyllirui(小李)
根据代码的意思,的确是要原来那样写的。
同表关联,必须用别名才能区别记录集。
关联时,并不需要表中全部内容,而是符合条件的记录集了,别名就表示该记录集的意思。
根据代码的意思,的确是要原来那样写的。
同表关联,必须用别名才能区别记录集。
关联时,并不需要表中全部内容,而是符合条件的记录集了,别名就表示该记录集的意思。
#15
把代码放在视图设计器中看一下可视化关系不就清楚了嘛!
#16
有这样的用法,不过可能是数据库设计时偷懒了。
#17
很多不同类的数据写在了同一个表的同一个字段
#18
呵呵,还蛮好玩的,lyllirui(小李)有意思的人。
#19
我看那代码没错啊!你可以用视图看一下!
#20
去扁人吧
#21
玩笑