Php 将mysql中的一列值与多个值匹配
好的,我正在创建一种在线购物服务,我有一个数据库,它需要一个字段来匹配多个其他字段。它们需要被存储,以便可以被忽略并设置为可能供以后查看。我知道设置逗号分隔的字段通常是不明智的,但我想不出更好的方法来跟踪匹配项,同时能够在以后将它们分类到单独的列中 例如,我有25种产品要卖,还有10个城市要卖。有些可以运往5个城市,有些可以运往9个城市。现在,如果有人在某个特定城市搜索产品,那么如何只显示那些仅在该城市销售的产品作为搜索结果?Php 将mysql中的一列值与多个值匹配,php,mysql,Php,Mysql,好的,我正在创建一种在线购物服务,我有一个数据库,它需要一个字段来匹配多个其他字段。它们需要被存储,以便可以被忽略并设置为可能供以后查看。我知道设置逗号分隔的字段通常是不明智的,但我想不出更好的方法来跟踪匹配项,同时能够在以后将它们分类到单独的列中 例如,我有25种产品要卖,还有10个城市要卖。有些可以运往5个城市,有些可以运往9个城市。现在,如果有人在某个特定城市搜索产品,那么如何只显示那些仅在该城市销售的产品作为搜索结果? 如果没有逗号分隔的字段,有没有更好的方法可以做到这一点?使用n:n表
如果没有逗号分隔的字段,有没有更好的方法可以做到这一点?使用
n:n
表格:
产品表
产品
id |名称
城市表
城市
id |名称
映射(两列上的唯一约束,而不是单个约束):
航运资讯
产品标识|城市标识
然后,您可以轻松地选择产品的所有可用城市,或选择装运到特定城市的所有产品
产品4的所有可用城市:从城市中选择*,其中cities.id=shipping\u info.city\u id和shipping\u info.product\u id=4
城市3的所有可用产品:
从产品、配送信息中选择*,其中配送信息.id=3和配送信息.product\u id=products.id
我将使用大约3-4个表格:
产品
-具有每个产品的数据城市
-拥有相关城市的数据产品与城市
-产品与城市之间有关系product\u cities
中会有5行,其中包含相同的product\u id
和不同的city\u id
当一个人搜索时,有如下内容:
SELECT pr.*
FROM cities AS c
INNER JOIN product_cities AS pc
ON c.id = pc.city_id
INNER JOIN products AS pr
ON pc.product_id = pr.id
WHERE c.name LIKE 'New York'
制作三个不同的表格-一个用于您拥有的产品,一个用于您想要销售产品的城市,另一个用于描述每个产品可以发送到哪里(id、product\u id、city\u id)
从这里开始,只需使用简单连接即可为所选城市选择可能的产品。有关完整查询,请参阅@RobinCastlin的答案。
Two way to you will be match one column value with mutiple value using 'case statement' or in statement in where clause like:
select (case when col1>col2 then col2 else
when col1>col4 then col4 else
col1 end) as colname, col5 from tablename
or
select * form tablename where col11 in (1,2,3)