Php 什么';让一个MySQL行从另一个表访问多个索引的正确方法是什么?
假设我有一个“Php 什么';让一个MySQL行从另一个表访问多个索引的正确方法是什么?,php,mysql,Php,Mysql,假设我有一个“PRODUCTS”表,如下所示: ------------------ ID NAME ------------------ 1 tomato 2 lettuce 3 bacon 4 bread 5 mayonnaise 6 tuna ------------------ 在我的另一张表格“人””中,我想将一个人与许多产品联系起来……但我不知道有多少 我一直在做的是,将该人员的所有产品ID以空格(3 5 2 6)分隔的数字形
PRODUCTS
”表,如下所示:
------------------
ID NAME
------------------
1 tomato
2 lettuce
3 bacon
4 bread
5 mayonnaise
6 tuna
------------------
在我的另一张表格“人”
”中,我想将一个人与许多产品联系起来……但我不知道有多少
我一直在做的是,将该人员的所有产品ID以空格(3 5 2 6)分隔的数字形式放在一个字段中,然后分解成一个数组,然后在数组中循环并使用ID=x的查询获取每个产品
我相信这已经做过很多次了(比如Facebook上的一个用户有很多朋友……都有自己的ID)。有更好的方法吗?传统的方法是通过 表:
- 产品(id、产品名称)
- 人员(id、人员名称)
- 人员和产品(id、产品id、人员id)
SELECT person_name, product_name FROM people_products
INNER JOIN products ON products.id = people_products.product_id
INNER JOIN people ON people.id = people_products.person_id;
设置将人员ID链接到产品ID的新表 例如表“PeopleProducts” 等等 然后使用sql连接获取与特定人员Id关联的产品,例如:
SELECT * FROM PeopleProducts LEFT JOIN PRODUCTS ON PRODUCTS.ID = PeopleProducts.productId WHERE PeopleProducts.peopleId = 3
使用AKA链接表。阅读有关数据库规范化和多对多关系的内容。谢谢…我有一些学习要做。然后你可以写一些查询,比如向10个吃西红柿的人中有5个也吃培根等等的人建议,这将非常有趣。太棒了。谢谢你。
SELECT * FROM PeopleProducts LEFT JOIN PRODUCTS ON PRODUCTS.ID = PeopleProducts.productId WHERE PeopleProducts.peopleId = 3