由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
PhotoGear版 - 请教mySQL一条查询语句,有包子!
相关主题
发三黄i7-2600 处理照片是不是很浪费?
写mysql query最好用啥 ?伤不起的文科生~~~~(>_<)~~~~
旋儿 等 做DBA的 万佛请进比较我国的码工和印度码工
今晚开始折腾想学Oracle,请教一下 (转载)
奔姐姐的几张专业艺术照,hoho (转载)万佛,请教一个数据库问题
问个mysql的初级问题:用户权限 (转载)拖家带口佛罗里达(D6, D7 完)
apache+php+mysql的文件上传问题 (转载)怎么也适应不了 N+ 人像的色调,咋办?
shopper是跑路了么奔一条Express正红连衣裙+两条项链 (转载)
相关话题的讨论汇总
话题: select话题: query话题: where话题: name话题: t2
进入PhotoGear版参与讨论
1 (共1页)
s****a
发帖数: 6521
1
现在我有两个表,一个表中记录了所有ID两两对战的成绩,表有3列:ID1, ID2, score
第二个表中记录了所有ID对应的人名,两列,分别是ID 和name.
现在想任意输入两个人名,查询他们的对战成绩
应该怎样做?
谢谢!
d*********u
发帖数: 8521
2
ID 是unique的话为啥不用ID 做identity变量,把两个表link在一起,然后查询不就行
了……
s****a
发帖数: 6521
3
表1里面ID1或者ID2都不一定是全集啊。。。
比如说表里面可能只有9527, 9534, 100
而没有 9534,9527这样的记录
d*********u
发帖数: 8521
4
不一定是全集,可是你的表一(包含分数的)是master file吧?
换句话说,你的表二有的ID,对应的某人姓名,如果此人的ID在表一查不到,那分数也
还是查不到的,没影响啊?只要用表1作为master file,然后用表二的文件做参考,把
表二中和表一相符的ID做identity,将其对应的人名当做新的变量加到表一不行么?
或者说你的比赛没打完,有的ID-人的分数还没出来,那也没关系,你只要确定所有参
赛者的ID和人名都在表二里,那就把表二作为master file,然后将表1 的变量加到表
二里也行……

【在 s****a 的大作中提到】
: 表1里面ID1或者ID2都不一定是全集啊。。。
: 比如说表里面可能只有9527, 9534, 100
: 而没有 9534,9527这样的记录

s****a
发帖数: 6521
5

给表1里加入两列人名是可行的
不过现在我想探讨两表查询的方法,因为实际上我的表二里每个人都有很多个别名、小
名之类的。。
把表1里的成绩加到表2里是不可能的,因为表1里每个record都包含两个ID,也就是说
两个ID确定一个score.
说清楚点就是,表1是这个样子的:
1号 2号 5:2
1号 3号 4:2
1号 4号 2:6
1号 5号。。。
。。。
。。
2号 3号 4:4
2号 4号 3:3
。。。。
。。。。

【在 d*********u 的大作中提到】
: 不一定是全集,可是你的表一(包含分数的)是master file吧?
: 换句话说,你的表二有的ID,对应的某人姓名,如果此人的ID在表一查不到,那分数也
: 还是查不到的,没影响啊?只要用表1作为master file,然后用表二的文件做参考,把
: 表二中和表一相符的ID做identity,将其对应的人名当做新的变量加到表一不行么?
: 或者说你的比赛没打完,有的ID-人的分数还没出来,那也没关系,你只要确定所有参
: 赛者的ID和人名都在表二里,那就把表二作为master file,然后将表1 的变量加到表
: 二里也行……

p*******f
发帖数: 521
6
1. write a simple stored procedure, or
2. use your code to pre-process the name->id look up, in the query just use
the ids, then post-process the id->name look up
3. create temp tables in subqueries if you really want all things to be done
in one query.
s****a
发帖数: 6521
7

use
done
能举例一下subquery在这个例子里的用法么?谢谢!

【在 p*******f 的大作中提到】
: 1. write a simple stored procedure, or
: 2. use your code to pre-process the name->id look up, in the query just use
: the ids, then post-process the id->name look up
: 3. create temp tables in subqueries if you really want all things to be done
: in one query.

p*******f
发帖数: 521
8

e.g.
select * from
(select id, name.... from t1, t2 where....) temp1,
(select id, name.... from t1, t2 where....) temp2
where temp1... temp2.....
or you can have temp table inside another temp table.

【在 s****a 的大作中提到】
:
: use
: done
: 能举例一下subquery在这个例子里的用法么?谢谢!

x*******3
发帖数: 8342
9
这题无解
你2个table没有任何关联ref
3个id columns, id, id1, id2
怎么弄
s****a
发帖数: 6521
10

名字是没有关联,可是id1和id2中的值都在id中有对应。

【在 x*******3 的大作中提到】
: 这题无解
: 你2个table没有任何关联ref
: 3个id columns, id, id1, id2
: 怎么弄

相关主题
问个mysql的初级问题:用户权限 (转载)i7-2600 处理照片是不是很浪费?
apache+php+mysql的文件上传问题 (转载)伤不起的文科生~~~~(>_<)~~~~
shopper是跑路了么比较我国的码工和印度码工
进入PhotoGear版参与讨论
x*******3
发帖数: 8342
11

select tmp1.name,tmp2.name,score
from
(select id,name from t2 where id=@id1) tmp1
(select id,name from t2 where id=@id2) tmp2
t1
where t1.id1=tmp1.id and t1.id2=tmp2.id

【在 s****a 的大作中提到】
:
: 名字是没有关联,可是id1和id2中的值都在id中有对应。

k****t
发帖数: 12697
12
用不这这复杂, 俺老头子的解:
select p1.name, p2.name, score from
scores s inner join people p1
on s.id1=p1.idnumber
inner join people p2
on s.id2=p2.idnumber
where p1.name='chuck' and p2.name='john'
or p2.name='chuck' and p1.name='john'
包子啊

【在 x*******3 的大作中提到】
:
: select tmp1.name,tmp2.name,score
: from
: (select id,name from t2 where id=@id1) tmp1
: (select id,name from t2 where id=@id2) tmp2
: t1
: where t1.id1=tmp1.id and t1.id2=tmp2.id

v***a
发帖数: 23651
13
宣儿还号称靠这个吃饭的。。。

【在 k****t 的大作中提到】
: 用不这这复杂, 俺老头子的解:
: select p1.name, p2.name, score from
: scores s inner join people p1
: on s.id1=p1.idnumber
: inner join people p2
: on s.id2=p2.idnumber
: where p1.name='chuck' and p2.name='john'
: or p2.name='chuck' and p1.name='john'
: 包子啊

s****h
发帖数: 3979
14
CREATE TABLE Match
(
player1 integer,
player2 integer,
score varchar(10)
)
CREATE TABLE Players
(
ID integer,
name varchar(10)
)
insert into Match
values
( 3, 2, '3:1'),
( 2, 1, '3:1'),
( 3, 1, '3:1'),
( 1, 2, '3:1'),
( 1, 3, '3:1'),
( 2, 3, '3:1')
insert into Players
values (1, 'A'),
(2, 'B'),
(3, 'C')
declare @P1 integer
declare @P2 integer
set @P1 = 1;
set @P2 = 3;
select P1.name, P2.name, M.score
from Match M
join Players P1 on P1.id = M.player1
join Players p2 on P2.id = M.player2
where (P1.id = @P1 and P2.id = @P2) or (P1.id = @P2 and P2.id = @P1)
s****a
发帖数: 6521
15

其实。。。你们两个行数差不多,而且他的看起来还更好懂些~
看完再包子

【在 k****t 的大作中提到】
: 用不这这复杂, 俺老头子的解:
: select p1.name, p2.name, score from
: scores s inner join people p1
: on s.id1=p1.idnumber
: inner join people p2
: on s.id2=p2.idnumber
: where p1.name='chuck' and p2.name='john'
: or p2.name='chuck' and p1.name='john'
: 包子啊

s****a
发帖数: 6521
16
包子发完了,谢谢!
k****t
发帖数: 12697
17
选二的两TEMP TABLE COST 巨大

【在 s****a 的大作中提到】
: 包子发完了,谢谢!
s****a
发帖数: 6521
18
再追加一个包子:
如果只指定一个人的名字,列出所有与他有关的对手以及得分,又怎么做?
我把xr的code按如下改了,结果出不来结果,无响应:
select tmp1.name,tmp2.name,score
from
(select id,name from t2 where id=@id1) tmp1
(select id,name from t2) tmp2
t1
where t1.id1=tmp1.id and t1.id2=tmp2.id
为什么呢?
k****t
发帖数: 12697
19

select p1.name, p2.name, score from
scores s join people p1
on s.id1=p1.idnumber
join people p2
on s.id2=p2.idnumber
where p1.name='chuck' or p2.name='chuck'

【在 s****a 的大作中提到】
: 再追加一个包子:
: 如果只指定一个人的名字,列出所有与他有关的对手以及得分,又怎么做?
: 我把xr的code按如下改了,结果出不来结果,无响应:
: select tmp1.name,tmp2.name,score
: from
: (select id,name from t2 where id=@id1) tmp1
: (select id,name from t2) tmp2
: t1
: where t1.id1=tmp1.id and t1.id2=tmp2.id
: 为什么呢?

s****a
发帖数: 6521
20

看懂了
mysql的语法那么自由啊
乱飞一气

【在 k****t 的大作中提到】
: 选二的两TEMP TABLE COST 巨大
相关主题
想学Oracle,请教一下 (转载)怎么也适应不了 N+ 人像的色调,咋办?
万佛,请教一个数据库问题奔一条Express正红连衣裙+两条项链 (转载)
拖家带口佛罗里达(D6, D7 完)这次俺的GITZO 一条腿也松了
进入PhotoGear版参与讨论
k****t
发帖数: 12697
21
包子

【在 s****a 的大作中提到】
:
: 看懂了
: mysql的语法那么自由啊
: 乱飞一气

s****a
发帖数: 6521
22

不是发了么
不认帐啊

【在 k****t 的大作中提到】
: 包子
k****t
发帖数: 12697
23
你不是追加一个包子么?

【在 s****a 的大作中提到】
:
: 不是发了么
: 不认帐啊

s****a
发帖数: 6521
24

追加的问题你没答啊?
另外,我用了一下xr的查询,0.00秒;用了一下你的,0.72秒。
这。。。

【在 k****t 的大作中提到】
: 你不是追加一个包子么?
s****a
发帖数: 6521
25
好吧,是我没看见你下面的东西。。。
补上。
x*******3
发帖数: 8342
26

这个是原因:
唐老的语句:
set profiling=1;
select t2.name, t3.name, score from
t1 inner join t2
on t1.p1=t2.p
inner join t2 t3
on t1.p2=t3.p
where t2.name like 'a' and t3.name like 'c';
set profiling=0;show profile;
结果:
+--------------------------------+-----------+
| Status | Duration |
+--------------------------------+-----------+
| (initialization) | 0.000093 |
| checking query cache for query | 0.000174 |
| Opening tables | 0.000121 |
| System lock | 0.0001 |
| Table lock | 0.000139 |
| init | 0.000145 |
| optimizing | 0.000125 |
| statistics | 0.000121 |
| preparing | 0.000133 |
| executing | 0.000101 |
| Sending data | 0.000425 |
| end | 0.000137 |
| query end | 0.000096 |
| storing result in query cache | 0.000098 |
| freeing items | 0.000102 |
| closing tables | 0.000105 |
| logging slow query | 0.0000950 |
+--------------------------------+-----------+
17 rows in set (0.00 sec)
我的:
set profiling=1;
select tmp1.name,tmp2.name,score
from
(select p,name from t2 where name like 'a')tmp1,
(select p,name from t2 where name like 'c')tmp2,
t1
where t1.p1=tmp1.p and t1.p2=tmp2.p;
我的:
+--------------------------------+-----------+
| Status | Duration |
+--------------------------------+-----------+
| (initialization) | 0.0000889 |
| checking query cache for query | 0.000097 |
| checking privileges on cached | 0.0000939 |
| sending cached result to clien | 0.000097 |
| logging slow query | 0.000092 |
+--------------------------------+-----------+
5 rows in set (0.00 sec)
这是为什么我的语句快
但是写起来唐老的简单写
算法上俺地快

【在 s****a 的大作中提到】
: 好吧,是我没看见你下面的东西。。。
: 补上。

x*******3
发帖数: 8342
27

你第二个等于
select * from t2 当然不行
要去掉
还有where clause

【在 s****a 的大作中提到】
: 再追加一个包子:
: 如果只指定一个人的名字,列出所有与他有关的对手以及得分,又怎么做?
: 我把xr的code按如下改了,结果出不来结果,无响应:
: select tmp1.name,tmp2.name,score
: from
: (select id,name from t2 where id=@id1) tmp1
: (select id,name from t2) tmp2
: t1
: where t1.id1=tmp1.id and t1.id2=tmp2.id
: 为什么呢?

x*******3
发帖数: 8342
28


我是DBA啊
怎么了

【在 v***a 的大作中提到】
: 宣儿还号称靠这个吃饭的。。。
v***a
发帖数: 23651
29
matlab精通不

【在 x*******3 的大作中提到】
:
: 囧
: 我是DBA啊
: 怎么了

x*******3
发帖数: 8342
30
no
never used

【在 v***a 的大作中提到】
: matlab精通不
相关主题
杯具,肌肉可能撕裂鸟写mysql query最好用啥 ?
我来讲讲我第一单BCB的故事吧旋儿 等 做DBA的 万佛请进
发三黄今晚开始折腾
进入PhotoGear版参与讨论
x*******3
发帖数: 8342
31
咋了?

【在 v***a 的大作中提到】
: matlab精通不
1 (共1页)
进入PhotoGear版参与讨论
相关主题
奔一条Express正红连衣裙+两条项链 (转载)奔姐姐的几张专业艺术照,hoho (转载)
这次俺的GITZO 一条腿也松了问个mysql的初级问题:用户权限 (转载)
杯具,肌肉可能撕裂鸟apache+php+mysql的文件上传问题 (转载)
我来讲讲我第一单BCB的故事吧shopper是跑路了么
发三黄i7-2600 处理照片是不是很浪费?
写mysql query最好用啥 ?伤不起的文科生~~~~(>_<)~~~~
旋儿 等 做DBA的 万佛请进比较我国的码工和印度码工
今晚开始折腾想学Oracle,请教一下 (转载)
相关话题的讨论汇总
话题: select话题: query话题: where话题: name话题: t2