动态分类的表如何设计,请高手帮忙。
以笔记本电脑为例。他的分类有多种,比如品牌,屏幕尺寸等等,以后可能会增加分类。在笔记本电脑列表的页面,要求能按照品牌、屏幕尺寸等分类筛选,并且可以按照价格、销量排序。
比如这个页面:http://www.goodjd.com/category/p-1061001.html
请问这种动态的分类,并且有排序需求的表如何来设计,请高手教教我。
以笔记本电脑为例。他的分类有多种,比如品牌,屏幕尺寸等等,以后可能会增加分类。在笔记本电脑列表的页面,要求能按照品牌、屏幕尺寸等分类筛选,并且可以按照价格、销量排序。
比如这个页面:http://www.goodjd.com/category/p-1061001.html
请问这种动态的分类,并且有排序需求的表如何来设计,请高手教教我。
postgresql数据库中,如何写类似sql server中的存储过程 比如
在 sql server中
create proc proc_organ
(
@strWhere varchar(800)
)
as
declare @sql varchar(8000)
set @sql = ’select oid ‘
select @sql = @sql + ‘ , max(case tid when ”’ + convert(varchar(5),tid) + ”’ then score else 0 end) [' + convert(varchar(5),tid) + ']‘
from (select distinct tid from (select o.name as oid,t.name as tid,ot.score from organ as o,Typename as t,ot where o.id=ot.oid and t.id=ot.tid) as d) as a
set @sql = @sql + ‘ from (select o.name as oid,t.name as tid,ot.score from organ as o,Typename as t,ot where o.id=ot.oid and t.id=ot.tid) as c group by oid’
set @sql = ’select oid,’+@strWhere+’ from (‘ + @sql +’) as abc ‘
exec(@sql)
exec proc_organ ‘安全,环保,质量’
在postgresql 里面应该如何写呢?
初学的mysql网友好象经常会碰到mysql无法连接的错误。特开贴收集这样问题的现象和原因。
先自己扔块砖头出来。
=====================================================================================================
故障现象 : 无法连接 mysql
错误信息 :ERROR 2003 (HY000): Can’t connect to MySQL server on ‘hostxxxxx‘ (10061)
原因 : mysqld数据库服务没有启动。
检查 :在windows 的任务管理器,或者 unix/linux 下 ps -aux | grep mysql 看一下。确认服务已经启动。
处理 :启动mysqld 服务
=====================================================================================================
详细描述是这样的:
数据库中有两个表,分别为A、B,A表中有a、b两个数据单元需要用,B中有c、d两个数据单元要用,将两个表连接(全连接),我想访问的结果是需要按照a,b,c,d四项的和来排序的,需要怎么实现呢?
ps:abcd是需要select的数据,select之后需要加起来才是最终要的结果,两个表有相同的主键作为连接。
周末还得写代码,好悲剧,好人们来帮帮忙吧
我想查询符合 field1 或者field2 或者field3 里有文字books,并且field4 或者field5 或者field6 里有文字english,结果按照时间倒序,限制条数为30。
我使用PHP
这样的 MYSQL QUERY语句正确吗?求一个效率高一点的语句。谢谢
table:
id | date | field1 | field2 | field3 | field4 | field5 | field6 1 | 1298617011 | textbook | newspaper | | chinese | Japanese | english 2 | 1298618005 | books | | | chinese | french | field1 3 | 1298618083 | newspaper| magazine | books | english | |
…
$result = mysql_query("SELECT * FROM table WHERE (field1 = 'books' OR field2 = 'books'OR field3 = 'books') and (field4 = 'english' OR field5 = 'english' OR field6 = 'english') Order By date DESC LIMIT 30");
分数据库有什么坏处,如果不分库,改现有程序,改数据库?
如果一个虚拟主机+一个数据库作一个城市,不用改程序个城市独立的,这样好吗?
现有一个城市已有200多个表,如果在100个城市放一个库中,可以用每个表加个CITY_ID,或每个城市存在同一个库中不同表中,哪要2万多个表,性能是不是不好?用多表或用city_id 筛选,哪个性能好?
MYSQL一个数据库实例,可以建多个数据库,一个数据库可以建多少个表?
搜房,安居客,58,ganji 他们的多城市架构有没分库?怎样架构的?
我的表比较多,数据也比较多,我用dump的方法备份然后再再另外一台电脑上恢复,就会报错,会不会是因为我的数据牵扯到很多的子总增长和主外键,导致了无法完整恢复上去?
大家有谁遇到过类似的问题吗?求解!
小弟以前一直用Sybase的PowerDesigner,被他们盯上老是来骚扰。公司要求清除机器中所有Sybase的产品,8能再用PD。
帮忙推荐一个代替PD数据库建模的工具,不要Rose、Visio。
建模后能导出SQL脚本的,能支持MySQL脚本。
最好是免费软件没有版权问题的。^_^
mysql里的时间是以int类型存储的 里面是类似于1297797457这样的数字,我现在网页输入框里输入的是类似于
2011-02-16 03:17:37这样的年月日时分秒这样的字符串,
问题:我如何把“2011-02-16 03:17:37”转换为mysql能识别的时间并用于查询。
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'shsadmin'@'%' IDENTIFIED BY 'f,d,r5080' WITH GRANT OPTION; GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'shsadmin'@'localhost' IDENTIFIED BY 'f,d,r5080' WITH GRANT OPTION;
请问%和localhost的区别
delimiter $
drop procedure if exists collectUserBoughts$
create procedure collectUserBoughts()
begin
declare dbIndex int(3) default 0;
C1:while dbIndex < 3 do
/*
创建视图
*/
select dbIndex;
//显示表号
drop view if exists view_temp;
set @sql=concat(‘create view view_temp as select userid,productid from userorderitem’,dbIndex,’ order by userid’);
prepare stm from @sql;
xecute stm;
deallocate prepare stm;
select count(*) from view_temp;/*该语句结果表明无论dbIndex如何变化,视图里的数据都是来自*userorderitem0的数据*/
set dbIndex = dbIndex + 1;
end while C1;
/*
删除视图
*/
drop view view_temp;
end$
delimiter;
为什么无论dbIndex的值如何变化,视图的数据都是第一个表的数据?
@echo off echo. echo database backup echo ***************************** echo. echo Today is %date% echo Time is %time% echo. echo ***************************** set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%" cd C:\Program Files\MySQL\MySQL Server 5.0\bin mysqldump -uroot -p123 -B salo > c:\1.sql echo. echo MySQL database backup successful,Please check it echo. echo. pause Restore: @echo off echo. echo Database restore echo ***************************** echo. echo Today is %date% echo Time is %time% echo. echo ***************************** set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%" cd C:\Program Files\MySQL\MySQL Server 5.0\bin mysql -uroot -p123 salo < c:\1.sql echo. echo MySQL database restore successful,please check it echo. echo. pause
为什么当本地的数据库没有salo时,就会发生还原错误。
以前一直不在意,建表时,就随便选的,等数据容量增大时,才发现当初设计的很不合适。
比如下面这张会员表,大家看看有哪些错误,或者不合理的地方呢?
请大家指点

我有两个表category和 category_parent
第一个表存的是所有的商品信息(包含日期)
第二个表存的是父子关系,在这两个表里有很多记录
如果有一个记录为rec1,那么,在这个表里查询他的父纪录为rec11,再通过rec11,查他的父rec111,同样再查出rec1111
我想做的事情是查到rec1111这个级别,然后对所有商品的纪录进行分类,然后在我的前台进行表示
因为rec1111这个级别的纪录比较多,而且两个表的的数据量都在几十万以上,并且持续增加中,
所以每次从表里取数据,就非常的慢,以前写普通的sql语句,单纯加索引,速度也是非常慢的。mysql好像并不快。
以下是我现在的解决方法,就是把纪录取出来放到一个临时表,再取再放,最后把每个商品的所有父类的信息取出来。但是mysql的临时内存好像又比较小,客户又不想改变mysql的server配置。现在想知道有没有更好的办法,我的sql水平不高,请大家帮我出出主意叭,上火啊
以下是我现在的sql文
把第一个表里面在某一时间范围的并且type是p的记录取出来,
然后到第二个表里面根据父子关系找出它们的父亲,
create temporary table category_pc
select c.category_id p_id, cp.parent_id c_id, c.from
from category c, category_parent cp
where c.category_id = cp.category_id && c.type=’p’ && ((c.from >= ‘".$sel_date_from."’ && c.from <=’".$sel_date_to."’)
继续找父亲,又生成一个临时表
create temporary table category_pcs
select c_pc.p_id, c_pc.c_id, cp.parent_id s_id, c_pc.from, c.name s_name
from category_pc c_pc, category_parent cp, category c
where c_pc.c_id=cp.category_id && cp.parent_id=c.category_id";
继续找父亲,又生成一个临时表
create temporary table category_pcsb
select c_pcs.p_id, c_pcs.c_id, c_pcs.s_id, cp.parent_id b_id, c_pcs.s_name, c_pcs.from, c.name b_name
from category_pcs c_pcs, category_parent cp, category c
where c_pcs.s_id=cp.category_id && cp.parent_id=c.category_id";
停止mysql服务
删除ibdata1, ib_logfile0, ib_logfile1
删除所有有关的数据库目录,比如我以前有个test_abc的库,就把mysql下的test_abc删除掉
重启数据库,貌似一切正常,也能新建数据库,新建表,也能进mysql,和information_schema库
然后全都可以读取,user表和那些help表那些数据也都正常
唯一不正常的,就是:mysql的proc表和information_schema库中的ROUTINES表还都保留着删除掉的库的存储过程和函数(以后要重建所有数据库,这些会被新建的同名的存储程序覆盖掉)
这样重建我总觉得太暴力了点,也怕有隐患,mysql自己有没有什么机制,可以reset到刚安装状态的?
我的mysql连接较对为utf-8_general_ci
* 服务器: localhost (localhost via TCP/IP)
* 服务器版本: 5.5.8-log
* 协议版本: 10
* 用户: root@localhost
* MySQL 字符集: UTF-8 Unicode (utf8)
网站服务器
* Apache/2.2.17 (Win32) PHP/5.3.5
* MySQL 客户端版本: mysqlnd 5.0.7-dev – 091210 – $Revision: 304625 $
* PHP 扩展: mysqli
建了个数据库testuft8 表为test
表 递增 操作 记录数 1 类型 整理 大小 多余
test 浏览 结构 搜索 插入 清空 删除 2 InnoDB utf8_general_ci 16.0 KB -
1 个表 总计 2 InnoDB utf8_general_ci 16.0 KB 0 字节
网页上<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
连接数据库的时候用了mysql_query("SET NAME ‘utf8′");
请问在phpmyadmin中文显示正常,网页输出不正常的原因!如两个字只输出一个?
请教各位,应该如何修改my.ini文件才能使mysql的起始配置变为如下设置
+————————–+——————————+
| Variable_name | Value |
+————————–+——————————+
| character_set_client | gbk |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | gbk |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | D:\net\mysql\share\charsets\ |
+————————–+——————————+
mysql中, 有个表70W的数据, 其中有一个状态字段,值有0,1,2三个,查询时每次查询出状态为0的一条,索引方面考虑了下,用处貌似不大?各位有没有什么好的建议?任何建议,都谢!
1.我把服务器的mysql分区文件传到我客户端,外面的mysql数据库读取分区文件,我是用跟服务器的id一样的来处理(就是先创建分区,然后覆盖读取),这个有什么更好的解决方案吗?因为分区id去对应很容易出错。看后面就知道。
2.就是Mysql是文件流的数据库,有的时候我在读取数据的时候,因为非法关闭程序或者关机,会照成我当前的处理的mysql文件分区破坏点,而且我mysql分区是按顺序的,如果中间一个出错后面就执行不下去了,这个要怎么办呢?我现在是这样处理的,这个被破坏的分区Id丢弃掉,从id+1再重新开始开始。可是这个不怎么合理。
3.我原来想用表结构一样的表,然后分区id改名覆盖,可是这样多次覆盖很有问题,会出现ERROR 1194 (HY000): Table ‘user’ is marked as crashed and should be repaired错误 有什么更好的方案吗
高手们指点下 谢谢