MYSQL的分组排序关题。
$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




