Office中国论坛/Access中国论坛

标题: [求助]联合查询的排序 [打印本页]

作者: kevindeng    时间: 2006-5-31 19:21
标题: [求助]联合查询的排序
我想从如下两个表做一个联合查询,但发现排序出现问题

表USysOperate:[attach]18159[/attach]

表tblProduct:[attach]18158[/attach]

我的查询是Select * from USysOperate
UNION (SELECT [tblProduct].[ProductID], [ProductNameENG] & "(" & [ProductNameCHN] & ")" & " " & [size] AS Product
FROM tblProduct
ORDER BY [tblProduct].[ProductNameENG], [tblProduct].[Size]);


得到的结果 [attach]18160[/attach]

中Product部分没有排序,怎么样让下面的Product中按查询中设计的排序呢?




作者: kevindeng    时间: 2006-5-31 19:22
我想得到的结果是[attach]18161[/attach]

不知道有没有可行性?

作者: kevindeng    时间: 2006-5-31 19:24
文件如下:

[attach]18163[/attach]

作者: andymark    时间: 2006-5-31 19:57
直接在查询中实现这样的排序比较难,另建一个查询,自定义排序

SELECT *
FROM 查询1
WHERE id In ("000","0000","1","2","3","6","4")
ORDER BY InStr(",000,0000,1,2,3,6,4,","," & id & ",");


具体参考这个例子

http://www.office-cn.net/forum.php?mod=viewthread&tid=39854&replyID=10688&skin=1


作者: crg770502    时间: 2006-5-31 20:01
Select ID,operate,0 as bz from USysOperate
UNION (SELECT [ProductID],[ProductNameENG] & "(" & [ProductNameCHN] & ")" & " " & [size] AS Product,1 as bz
FROM tblProduct)
ORDER BY bz, Operate, id;

作者: kevindeng    时间: 2006-5-31 20:28
楼上的好办法,可惜多了一行BZ出来,呵呵

况且PRODUCT中的排序也不是完全按照先是英文名称,然后是规格

我的本意是要做一个组合框的,那样可以直接在下拉列表中选择产品,或者添加,或者弹出对话框进行高级查询,看来实现比较难,不光是这个查询,而且组合框的编程也比较难以实现.

[此贴子已经被作者于2006-5-31 12:33:12编辑过]


作者: crg770502    时间: 2006-5-31 21:27
在组合框-行来源"select Operate from 查询1"

或者直接在combo0里直接add

Private Sub Combo0_Click()
    Select Case Combo0.Value
        Case Is = "添加新…"
            MsgBox "添加"
        Case Is = "查找……"
            MsgBox "查找"
    End Select
End Sub

作者: fan0217    时间: 2006-5-31 21:34
在联合查询中执行排序意义不大,而且浪费资源。在SQL中本身就没有记录先后一说。只是为了显示才进行排序的。


作者: andymark    时间: 2006-5-31 21:41
可以用临时表,按先后顺序追加进去
作者: kevindeng    时间: 2006-5-31 22:00
楼上的方法我也试过,但不稳定.我是用的数据表视图而且做子窗体的,有时候可以,有时候不行,可能是我的程序有点问题,我再查查,谢谢回复!!
作者: hi-wzj    时间: 2006-5-31 22:15
在字段值“添加新...”和“查找...”前加一空格,然后按operate来排序。
作者: crg770502    时间: 2006-5-31 22:23
如果只为组合框的那两个列表值大可不必如此劳神费力
作者: kevindeng    时间: 2006-5-31 22:43
以下是引用hi-wzj在2006-5-31 14:15:00的发言:


在字段值“添加新...”和“查找...”前加一空格,然后按operate来排序。

高招,我想到在前面加个a怎么就没想到加空格呢,呵呵

[此贴子已经被作者于2006-5-31 14:48:50编辑过]


作者: kevindeng    时间: 2006-5-31 22:50
以下是引用crg770502在2006-5-31 14:23:00的发言:
如果只为组合框的那两个列表值大可不必如此劳神费力

有什么好主意吗?
作者: 咱家是猫    时间: 2009-12-11 13:20
以下是引用crg770502在2006-5-31 14:23:00的发言:如果只为组合框的那两个列表值大可不必如此劳神费力
有什么好主意吗?
kevindeng 发表于 2006-5-31 22:50

把不想显示的列的列宽设为0cm




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3