如何使用数组查询mysql数据

时间:2011-09-26 19:53:45

标签: php mysql

我有两张桌子colorcode& users

colorcode

ID colorid  colorname
------------------------
1  1        yellow
2  2        black
3  3        red
4  4        white

users

ID userid  colorid
------------------------
1  1        1,2
2  2        3,4
3  3        1,3,4
4  4        1

如何检索&查询个人colorid

$aa = $db->query("SELECT * FROM colorcode"); 
$colors = array();
   while ($colordata = mysql_fetch_assoc($aa)) {
   $colors[] = $colordata["colorid"];
}

假设我想查询哪些用户有yellow颜色&我应该为users

使用什么声明
SELECT .. FROM users
WHERE colorid ....

2 个答案:

答案 0 :(得分:1)

这是一个糟糕的设计......因为你试图访问用户表中的各个color_ids,但是将它们存储为以逗号分隔的列表,你可以让数据库为你做一个正常的连接 - 你'通过使数据库不可能为您做相关而无法使用关系数据库。

但是,既然你使用的是mysql,那么你很幸运 - mysql具有以下功能:

SELECT users.ID, userid, GROUP_CONCAT(colorcode.colorname)
FROM users
LEFT JOIN colorcode ON FIND_IN_SET(colorcode.ID, users.colorid)
GROUP BY users.id

答案 1 :(得分:0)

SELECT * FROM users
WHERE colorid LIKE "%1%"

但是我真正要做的是创建一个从用户到颜色的链接表:

  

usersToColors:

ID userid  colorid
------------------------
1  1        1
2  1        2
3  2        3
4  2        4
...

然后你可以这样做:

SELECT * FROM users u, usersToColors utc
WHERE u.userid = utc.userid 
      AND utc.colorid = 1;

甚至:

SELECT * FROM users u, usersToColors utc, colors c
WHERE u.userid = utc.userid 
      AND utc.colorid = c.colorid
      AND c.colorname = "yellow";