繁体   English   中英

如何使用数组查询mysql数据

[英]How do I query mysql data with array

我有2个表colorcodeusers

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 ....

这是一个糟糕的设计...由于您尝试访问用户表中的各个color_id,但已将它们存储为以逗号分隔的列表,因此您无法让数据库为您进行常规联接-您已被淘汰通过使关系数据库无法为您执行关联来使用关系数据库的要点。

但是,由于您使用的是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
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";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM