问个关于数据查询的问题.

afoskoo 2005-01-29 02:00:36
比如:
物品A,有n种配件,a1,a2,a3.....
物品B,有m种配件,b1,b2,b3,b4,b5....
就是说配件数量不确定.
表设计这样:
TB_wupin:
wup_id
wup_mingcheng
wup_zhongliang

TB_peijian:
pei_id
pei_wupin_id
pei_mingcheng
pei_zhongliang

wup_id与pei_wupin_id对应.
现在需要在一个页面显示30个物品的详细资料,包括所含的配件:
名称 重量 配件
物品A 30 a1,a2,a3.....
物品B 12 b1,b2,b3,b4,b5....

该如何查询呢?
或者表结构应该怎样设计比较好?
...全文
129 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
afoskoo 2005-03-04
  • 打赏
  • 举报
回复
gaochao79 是鄙视我吗?
请问出于什么原因?
tony-杨 2005-01-31
  • 打赏
  • 举报
回复
......................................
?????????????????????????????????????
gaochao79 2005-01-31
  • 打赏
  • 举报
回复
懒虫!鄙视你!!
bflovesnow 2005-01-30
  • 打赏
  • 举报
回复
你的表设计比较合理,你的查询结果用 MySQL 的用户变量 也可以完全做到,请看手册中 用户变量 的说明:

6.1.4 用户变量

MySQL 支持连接特定(connection-specific)的用户变量,用 @variablename 句法表示。一个变量名可以由当前字符集中包含的文字与数字字符以及 “_”、“$” 和 “.” 组成。缺少的字符集为 ISO-8859-1 Latin1;这可以通过改变 mysqld 的--default-character-set 的选项来改变。查看章节 4.6.1 用于数据和排序的字符集。

变量不必被初始化。缺省地,他们的值为 NULL 并可以存储一个整数、实数或字符串值。当连接线程退出时,这个线程的所有变量将会自动地被释放。

你可以通过 SET 句法来设置一个变量:

SET @variable= { integer expression | real expression | string expression }
[,@variable= ...].

在语句中除了 SET 之外还可以直接为一个变量赋值。然而在这各情况下,赋值操作符为 := 而不是 =,因为 = 在非 SET 语句中是用于比较的:

mysql> SELECT @t1:=(@t2:=1)+@t3:=4,@t1,@t2,@t3;
+----------------------+------+------+------+
| @t1:=(@t2:=1)+@t3:=4 | @t1 | @t2 | @t3 |
+----------------------+------+------+------+
| 5 | 5 | 1 | 4 |
+----------------------+------+------+------+

用户变量可以用于表达式所允许的任何地方。注意,这在数字必须明确指定的语境中并不适用,例如,在 SELECT 的 LIMIT 子句中或一个 LOAD DATA 语句的 IGNORE number LINES 的子句中。

注意:在一个 SELECT 语句中,各个表达式只有在它被送到客户端时才能被求值。这就意味着,在 HAVING、GROUP BY 或 ORDER BY 子句中,你不能使用一个包含在 SELECT 部份所设置变量的表达式。例如:下面的语句将不会按预期的运作:

mysql> SELECT (@aa:=id) AS a, (@aa+3) AS b FROM table_name HAVING b=5;

原因是因为 @aa 不会是当前行的值,而是前一个符合条件的行的 id 值。

规则就是在同一语句中决不赋值 和 使用同一个变量。

yyq136 2005-01-29
  • 打赏
  • 举报
回复
个人认为在建表时TB_wupin以wup_id为主建,TB_peijian中以wup_id为外部建.这样有助于将两个表有机的结合起来.
至于查询就简单了.
  • 打赏
  • 举报
回复
先列出物品,再相应的每一个物品
select * from TB_peijian where pei_wupin_id=wup_id
建议你使用英文名称建表
Meteorlet 2005-01-29
  • 打赏
  • 举报
回复
select * from tb_wupin, tb_peijian where tb_wupin.wup_id = tb_peijian.pei_wupin_id
颓废的老猫 2005-01-29
  • 打赏
  • 举报
回复
我觉得这个表结构合理。
方法一、
查询的时候分步查询,先查 TB_wupin,得到 wup_id 后,再查TB_peijian
方法二、
一次查询:select * from TB_wupin as w,TB_peijian as p where w.wu_id=p.pei_wupin_id
得到结果集,处理后再显示

21,882

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧