CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  PHP

MYSQL的分组排序关题。

楼主wukol(巢霞)2004-08-03 13:55:58 在 Web 开发 / PHP 提问

$query   =   "select   product.*,catalogs.*        
  from   product,catalogs   where   (product.smlcatalog=catalogs.menuid   or   product.sorts=catalogs.menuid)   $where   group   by   product.catalog,   product.sorts,   product.smlcatalog   order   by   product.catalog   ,   product.sorts   and   catalogs.menuname,   catalogs.menuname";  
   
  我要的是:  
   首先按catalog分大类,然后在catalog里分sorts类。  
   然后在sorts包括许多的smlcatalog。  
  而且:  
   每类都要按字段的字母的降序排列。  
   
  然后,上面那样读取数据出来是有点按序,又有点不是按序的。  
  请大家帮忙想想,帮我一下。我在线等。谢谢哦。  
  问题点数:20、回复次数:34Top

1 楼Debian(乌鱼子)回复于 2004-08-03 14:05:04 得分 0

我有点想回答你,又有点不想回答你Top

2 楼wukol(巢霞)回复于 2004-08-03 14:17:35 得分 0

那是回答還是不回答呀....?Top

3 楼wukol(巢霞)回复于 2004-08-03 14:24:50 得分 0

Debian(乌鱼子)怎么不回?Top

4 楼Debian(乌鱼子)回复于 2004-08-03 14:41:28 得分 0

首先,你至少应该告诉回答你问题的人,product、catalogs表的结构是什么样的,  
  而不是等着别人去看你的sql语句来分析。  
  Top

5 楼wukol(巢霞)回复于 2004-08-03 14:45:23 得分 0

好。等我哦。  
  这是catalogs:  
   menuid     int(11)       否         auto_increment                              
        menustep     varchar(255)       否                                      
        menuname     varchar(255)       否                                      
       
   
  这是product:  
                             
        commid     bigint(20)       否     0                                  
        name     varchar(150)       否                                      
        catalog     int(11)       否     0                                  
        sorts     int(11)       否     0                                  
        smlcatalog     int(11)       否     0                                  
        manufacturer     int(11)       否     0                                  
        wholesaler     int(11)       否     0                                  
        w_itemid     varchar(100)       否     0                                  
        inprice     varchar(20)       否                                      
        price     varchar(20)       否                                      
        marketprice     varchar(20)       否     0                                  
        stock     int(11)       否     0                                  
        tax     varchar(10)       否                                      
        shipping     varchar(11)       否     0                                  
        model     varchar(100)       否                                      
        description     text       否                                      
        detail     text       否                                      
        drumbeating     text       否                                      
        specialdetail     varchar(255)       否                                      
        weight     varchar(10)       否                                      
        images     varchar(255)       否                                      
        rebate     int(1)       否     0                                  
        comefrom     varchar(255)       否                                      
        warranty   type     int(11)       否     0                                  
        warranty   price     int(11)       否     0                                  
        warranty   duration     int(11)       否     0                                  
        inputtime     datetime       否     0000-00-00   00:00:00                                  
        display     int(1)       否     0    
  Top

6 楼wukol(巢霞)回复于 2004-08-03 14:50:24 得分 0

Debian(乌鱼子)快看呀。我给了表结构呀。Top

7 楼Debian(乌鱼子)回复于 2004-08-03 15:42:42 得分 0

粗略的看了一下,你说的“又有点不是按序的”是出现在menuname上吧。Top

8 楼wukol(巢霞)回复于 2004-08-03 15:47:59 得分 0

是的呢。怎么办?Top

9 楼Debian(乌鱼子)回复于 2004-08-03 15:59:29 得分 0

menuname是中文还是英文,还是混杂?  
  如果是中文,你试试看设置mysql的default-character-set   =   gb2312,  
  看看是否有用,中文确实是个头痛的问题。Top

10 楼wukol(巢霞)回复于 2004-08-03 16:04:54 得分 0

不是,是英文的。Top

11 楼Debian(乌鱼子)回复于 2004-08-03 16:54:56 得分 0

你先逐步的去掉条件试吧Top

12 楼wukol(巢霞)回复于 2004-08-03 17:03:10 得分 0

晕了,我试了。  
  后面的ORDER BY 条件,我试了很多种,还就只有这种是排序排的最顺的。  
  其它,一团糟。。Top

13 楼xuzuning(唠叨)回复于 2004-08-03 17:03:13 得分 0

请告知查询串中  
  ...   order   by   product.catalog   ,   product.sorts   and   catalogs.menuname,   catalogs.menuname  
   
  product.sorts   and   catalogs.menuname   的含义。为什么要这么写?Top

14 楼xuzuning(唠叨)回复于 2004-08-03 17:05:39 得分 0

我要的是:  
   首先按catalog分大类,然后在catalog里分sorts类。  
   然后在sorts包括许多的smlcatalog。  
  而且:  
   每类都要按字段的字母的降序排列。  
   
  ...   order   by   product.catalog   desc,   product.sorts   desc,catalogs.menuname   descTop

15 楼wukol(巢霞)回复于 2004-08-03 17:06:26 得分 0

就是sorts按名称的字母排序的意思。Top

16 楼Debian(乌鱼子)回复于 2004-08-03 17:08:23 得分 0

你的数据库表设计本身就是一团糟Top

17 楼wukol(巢霞)回复于 2004-08-03 17:12:56 得分 0

不会的呢。  
  改成...   order   by   product.catalog   desc,   product.sorts   desc,catalogs.menuname   desc  
  之后,就成乱的了。  
  比如:  
  第一个是Notebooks的catalog类。然后。下一个却会是Digital   Cameras的catalog类。  
  再下一个却又是Software的catalog类。  
  而在sorts里的顺序也是杂乱的。  
  我的本意就是按它本身的名称的Z.X.Y...这样排下去。Top

18 楼wukol(巢霞)回复于 2004-08-03 17:15:04 得分 0

为什么说我的数据库表设计本身就是一团糟?  
  真的很乱嘛?可是,这不是我弄的呀,是个比较厉害的人弄的。  
  Top

19 楼xuzuning(唠叨)回复于 2004-08-03 17:22:13 得分 0

因为你前面有group   by   product.catalog,   product.sorts,   product.smlcatalog   分组  
  所以排序是在分组中进行的,每组都是按catalog,   sorts,menuname   排序的  
  Top

20 楼wukol(巢霞)回复于 2004-08-03 17:35:27 得分 0

嗯,但,如果我只ORDER BY menuname这一项的话,也并不会达到正确的结果呀。  
  而更是乱。一下D...一下又C...一下又N...Top

21 楼Debian(乌鱼子)回复于 2004-08-04 09:35:12 得分 0

SELECT   product.   *   ,   catalogs.   *    
  FROM   product,   catalogs  
  WHERE   (   product.smlcatalog   =   catalogs.menuid   OR   product.sorts   =   catalogs.menuid   )  
  GROUP     BY   product.catalog,   product.sorts,   product.smlcatalog   order   by   catalogs.menuname,   product.sorts,   product.name  
   
  由于你对catalog,sorts,smlcatalog三者关系解释清楚,我无法知道三者的层次关系。Top

22 楼xuzuning(唠叨)回复于 2004-08-04 09:56:56 得分 5

再说一遍:当有分组时,(使用了group子句)排序将在组中进行!  
  Top

23 楼Debian(乌鱼子)回复于 2004-08-04 10:28:50 得分 15

没错,使用GROUP   BY时结果是在分组得列上进行排序,所以需要ORDER   BY来控制次序。Top

24 楼wukol(巢霞)回复于 2004-08-04 11:24:48 得分 0

大家帮忙看一下嘛。我的还没出来。帮忙。。Top

25 楼wukol(巢霞)回复于 2004-08-04 13:28:18 得分 0

当有分组时,(使用了group子句)排序将在组中进行!  
  我知道,你不觉得我就是要表达这个意思嘛?  
  问题是,如果我按这个意思写的话,根本就没有用嘛。Top

26 楼Debian(乌鱼子)回复于 2004-08-04 14:13:18 得分 0

你怎么区分catalog,sort,smlcatalog?他们之间的关系如何?Top

27 楼lovessm(绅士亦花心)(gentlelover)回复于 2004-08-04 15:20:02 得分 0

晕,看不懂楼主的意思!Top

28 楼wukol(巢霞)回复于 2004-08-04 16:08:30 得分 0

catalog,sort,smlcatalog都是从catalogs.menuid字段得到数据。Top

29 楼xuzuning(唠叨)回复于 2004-08-04 16:17:12 得分 0

贴出查询结果Top

30 楼wukol(巢霞)回复于 2004-08-04 16:29:01 得分 0

Computer   Hardware        
    Accessories      
     
  ¤Surge   Suppressors   ¤Accessories   -   CPU    
  ¤Fans   &   Thermal   Controllers   ¤Card   Reader/Adapter    
  ¤Cables   ¤Accessories   -   Hard   Drive    
  ¤Accessories   -   Video   Card   ¤Accessories-Printer    
  ¤Accessories   -   USB   ¤Accessories   -   Case    
  ¤Digital   Media   Remote    
     
     
    Network   Devices      
     
  ¤Bluetooth    
     
     
    CD   DVD   Rom/R/RW        
     
  ¤CDRW/DVD   Combo   ¤CD-ROM    
  ¤CD-R/RW   Drive   ¤DVD+/-R/RW   Drive    
  ¤DVD-ROM    
     
     
    Computer   Case      
  ¤Cases   (Computer   cases,   ATX   Form)   ¤Cases   (Server   Rackmount)    
   
     
     
    Computer   Systems    
     
  ¤Barebone   System   ¤Server   Barebone   Systerms    
   
     
     
    Controller   &   Cards        
     
  ¤PCI   Cards   ¤SCSI   Controller   Cards    
  ¤SATA   Controller   Cards   ¤Serial   Card    
  ¤Parallel   Card   ¤All   others    
  ¤1394   Card   ¤IDE/ATA   Cards    
   
     
     
    CPU      
     
  ¤Pentium   M   ¤Intel   Pentium   4    
  ¤Intel   Xeon   ¤Intel   Pentium   3    
  ¤Intel   Celeron   ¤AMD   Athlon   64    
  ¤AMD   Opteron   ¤AMD   Athlon   MP    
  ¤AMD   Athlon   XP   ¤AMD   Duron    
  ¤AMD   T-Bird   ¤AMD   K6-2    
  ¤VIA   Cyrix    
     
     
    Data   Storage      
     
  ¤Floppy   Drive   ¤MicroDrive    
  ¤ZIP   Drives   &   Disks   ¤Tape   Drives   &   Tapes    
   
     
     
    Hard   drive        
     
  ¤Serial   ATA   ¤EIDE    
  ¤SCSI   ¤External   Hard   drive    
   
     
     
    Keyboard   &   Mouse        
     
  ¤PS2/USB   Keyboard   ¤Wireless   Keyboard    
  ¤Gaming   -   Joystick,   Wheels   and   Game   Pad   ¤PS2/USB   Mouse    
  ¤Wireless   Mouse    
     
     
    Memory   &   Flash   Media        
     
  ¤184pin   DDR   DIMM   ¤Server   Memory    
  ¤Flash   Memory   ¤Rambus   Memory    
  ¤168pin   SDRAM   DIMM   ¤72-Pin   EDO/FPM   SIMM    
   
     
     
    Monitors,   TV   &   Projectors        
     
  ¤LCD   19   inch   ¤LCD   17   inch    
  ¤LCD   15   inch   ¤LCD   20.1   inch    
  ¤LCD   18   inch   ¤LCD   23   inch    
  ¤LCD   32   inch   ¤LCD   24   inch    
  ¤LCD   21.3   inch   ¤LCD   20   inch    
  ¤Projectors   ¤CRT   15   inch    
  ¤CRT   19   inch   ¤CRT   17   inch    
   
     
     
    Motherboard        
     
  ¤For   AMD   ¤For   Intel    
  ¤For   Server   System    
     
     
    Mp3   Players        
     
  ¤512   MB   ¤128   MB    
  ¤256   MB   ¤40   GB    
  ¤64   MB    
     
     
    Network   Devices        
     
  ¤Modems   ¤Wireless   AP/Bridge    
  ¤Network   Cards   ¤KVM   (Keyboard,   Video,   Mouse)   Switches    
  ¤Print   Server   ¤Network   Servers    
  ¤Routers/Remotes   ¤Wireles   Routers    
  ¤Switches   ¤Hubs   -   Network   /   USB   /   Firewire    
   
     
     
    Power        
     
  ¤400-599   Watts   ¤200-399   Watts    
  ¤UPS   ¤600-More    
  ¤60-199   Watts    
     
     
    Printer   &   Scanner        
     
  ¤Inkjet   printer   ¤Scanners    
  ¤All   in   One   ¤Laser   printer    
  ¤Photo   printer    
     
     
    Sound   card        
     
  ¤7.1CH   ¤6.1/7CH    
  ¤5.1/6CH   ¤4.1/5CH    
  ¤4   CH    
     
     
    Speaker        
     
  ¤2.0   ¤2.1    
  ¤5.1   ¤Headphones,   Headsets   and   Accessories    
  ¤7.1CH   ¤4.1    
  ¤6.1    
     
     
    USB   drive        
     
  ¤4   GB   ¤512   MB    
  ¤2   GB   ¤1GB    
  ¤256   MB   ¤128   MB    
  ¤64   MB   ¤32   MB    
  ¤16   MB    
     
     
    Video   card        
     
  ¤64   MB   ¤128   MB    
  ¤256   MB   ¤512   MB    
  ¤32   MB   ¤16   MB    
  ¤8   MB   ¤TV   Tuners    
   
     
     
    Network   Devices        
     
  ¤Wireless   Adapters    
     
     
     
       
       
    Software      
     
    Windows    
       
     
  ¤Operation   System   ¤application   software    
   
     
     
    Digital   Cameras      
     
    Accessories        
     
  ¤Digital   Camera   Batteries   &   Chargers   ¤Digital   Camera   Docks    
  ¤Digital   Camera   Kits    
     
     
    Camcorder        
     
  ¤Camcorders   -   Analog/Digital    
     
     
    Digital   Cameras      
     
  ¤4.0   MegaPixel   ¤3.2   MegaPixel    
  ¤3.0   MegaPixel   ¤3.1   MegaPixel    
  ¤2.0   MegaPixel   ¤1.3   MegaPixel    
  ¤3.34   MegaPixels   ¤4.23   MegaPixel    
  ¤5.0   MegaPixel   ¤8.0   MegaPixel    
  ¤6.0   MegaPixel    
     
     
    WebCam        
     
  ¤WebCam    
     
     
     
       
       
    Notebooks,   Mini   Computers,   and   PDAs      
     
    Accessories        
     
  ¤Battery   ¤others    
  ¤Carry   Bag    
     
     
    Notebook   Parts    
     
  ¤Memory   (Notebook   Memory)   ¤Barebone   System    
  ¤Hard   Drives   -   Notebooks/Laptops   ¤PC   Cards/PCMCIA   Modem   and   Network   Devices    
  ¤Floppy   Drives   ¤CD/DVD   ROM/RW   Drives    
   
     
     
    Notebooks        
     
  ¤Inter   CPU    
     
     
    PDAs      
     
  ¤PDA    
  Top

31 楼wukol(巢霞)回复于 2004-08-04 16:35:01 得分 0

Computer   Hardware   、Software、Notebooks、Digital   Cameras、   Mini   Computers,   and   PDAs这四个是Catalog   大类。  
  Accessories   、Network   Devices   、CD   DVD   Rom/R/RW....是每个Catalog   大类里的sorts类。  
  ¤Surge   Suppressors   ¤Accessories   -   CPU    
  ¤Fans   &   Thermal   Controllers   ¤Card   Reader/Adapter    
  ¤Cables   ¤Accessories   -   Hard   Drive    
  ¤Accessories   -   Video   Card   ¤Accessories-Printer    
  ¤Accessories   -   USB   ¤Accessories   -   Case    
  ¤Digital   Media   Remote   这些是sorts类里的smlcatalog了。  
  以此类推。。。  
  然后,我要的是都按字母的顺序排列。。。Top

32 楼xuzuning(唠叨)回复于 2004-08-04 16:53:02 得分 0

¤是什么?  
  把他放在单词前面当然要排不成序了Top

33 楼wukol(巢霞)回复于 2004-08-04 17:06:01 得分 0

呀。。那前面的总得排吧。  
  就算这个不能排。那前面两类总得排序出来吧。Top

34 楼wukol(巢霞)回复于 2004-08-04 17:07:32 得分 0

不是不是,那不是我在程序中加进去的。是我在页面中加去的。表里数据没有这个东东。  
  Top

相关问题

  • 分组排序
  • 分组后排序
  • mysql用分组及排序查询后,limit就不好用了?
  • mysql用分组及排序查询后,limit就不好用了??
  • 100分求一个MSSQL语句(关于分组再排序)!
  • 请教关于分组排序后,提取序号的问题
  • 关于查询分组和排序的问题...
  • mysql中如何取出“按第一个字母排序,分组”的记录?
  • 如何分组排序?
  • 分组排序SQL语句

关键词

  • ps2
  • 排序
  • amd
  • 字段
  • athlon
  • 字母
  • 排列
  • dvd
  • intel
  • 中文

得分解答快速导航

  • 帖主:wukol
  • xuzuning
  • Debian

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo