Php 用SQL匹配两个表

Php 用SQL匹配两个表,php,mysql,sql,postgresql,scripting,Php,Mysql,Sql,Postgresql,Scripting,我有一个名为“companys”的表,其中存储了我正在列出的立陶宛公司的一般信息,因此列名为name、phonenumber、town、zipcode等 但在MySQL表中输入数据时,还有一个名为“region”的列,我没有填写任何内容。真倒霉因此整列为空(即,没有一行在“区域”字段中包含值) 但是,我有另一个名为“regions”的表,它由两列组成:region_name和zipcodes,其中存储了国家中每个地区的所有zipcodes,仅用一行中的一个分隔符分隔 如何编写一个update语句

我有一个名为“companys”的表,其中存储了我正在列出的立陶宛公司的一般信息,因此列名为name、phonenumber、town、zipcode等

但在MySQL表中输入数据时,还有一个名为“region”的列,我没有填写任何内容。真倒霉因此整列为空(即,没有一行在“区域”字段中包含值)

但是,我有另一个名为“regions”的表,它由两列组成:region_name和zipcodes,其中存储了国家中每个地区的所有zipcodes,仅用一行中的一个分隔符分隔

如何编写一个update语句,该语句将在公司表中填写与每行(即每个公司)的zipcodes对应的region_名称

例如:

在名为“companys”的表中,一家公司的zipcode为5000,但没有列出任何地区。名为“regions”的表中有一行zipcode 5000,其中region_名称为“Northwest”,该值夹在其他zipcode之间,由换行符分隔

以下是“区域”表的图像:

我现在如何编写一个PHP或SQL语句,为那些Zipcode与该地区匹配的公司填写“Northwest”

到目前为止,我已经做到了:

$result = mysql_query("SELECT * FROM companies WHERE zipcode LIKE '$something_here'")
or die(mysql_error()); if(mysql_num_rows($result) > 0){ 
echo mysql_num_rows($result);
while ($row = mysql_fetch_assoc($result)){
} } else { echo "no matches"; }
} else { echo "ingen matches."; } 

我非常怀疑您能在SQL中实现这一点

但是,仔细想想,我不理解在
公司
表中填写这些区域的必要性,您总是可以通过从
区域
表中查询找到
区域

Select c.name, c.phonenumber, c.town, c.zipcode, r.region_name 
from companies c, regions r where r.zipcode like '%' + c.zipcode + '%'
and c.zipcode like '%something here%'

与我们分享您的尝试?您可以设置一个SQL FIDLE-样本数据的可能副本对于这类事情非常有用。还有,PostgreSQL标记,嗯?即使zipcodes由换行符分隔,也可以应用它吗?既然你将两者等同,就不会有任何匹配,对吗?你说的换行是什么意思?试试我更新的解决方案。我不能保证它会起作用,因为您的
regions
表的格式不正确。“您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解在第1行“@user3866921 my bad!”的“+7900795079607970798079907700773077417742775277557760”附近使用的正确语法<代码>+在SQL Server中使用,我记不起mySQL中连接的语法,您能自己尝试修复该部分吗?