Php 如何在一个MySQL查询中获取另一个表中引用的数据
我想从mysql中选择一些数据。但是,我查询的表中存储的一些数据是代码,为了获得文本描述,我需要将这些数据引用到另一个表中Php 如何在一个MySQL查询中获取另一个表中引用的数据,php,mysql,sql,Php,Mysql,Sql,我想从mysql中选择一些数据。但是,我查询的表中存储的一些数据是代码,为了获得文本描述,我需要将这些数据引用到另一个表中 TABLE: persons SELECT id, first_name, last_name, address_code, customer_type_code FROM persons WHERE id = 1001 TABLE: ref_address SELECT address_name FROM ref_address WHERE address
TABLE: persons
SELECT id, first_name, last_name, address_code, customer_type_code
FROM persons
WHERE id = 1001
TABLE: ref_address
SELECT address_name FROM ref_address
WHERE address_code = 123
TABLE: ref_customer_type_code
SELECT customer_type_name FROM ref_customer_type_code
WHERE customer_type_code = 456
如何将这三个查询组合在一起,在一个查询中返回id、名字、姓氏、地址、客户类型,而不是像这样查询三次?您要查找的是一个 在联接中,指定两个表以及它们之间的关系。在单个SELECT语句中,可以有多个JOIN子句 此查询表示表persons和ref_address应通过每个表中可用的相关列address_code链接或联接。表persons和ref_customer_type_code由customer_type_code列链接。 简言之,您需要定义表之间的关系。我使用别名只是为了让编写更便宜一些: 选择p.id、p.first\u name、p.last\u name、p.address\u code、p.customer\u type\u code ,ra.地址\名称 ,rctc.customer\u type\u name 来自作为p的人员 -将persons表与ref_address表连接起来, -使用每个表的address_code列 内部连接参考地址为ra 在p.address\u code=ra.address\u code上 -将persons表与ref_customer_type_code表连接起来 -使用每个表的customer\u type\u code列 内部连接参考客户类型代码为rctc 在p.customer\u type\u code=rctc.customer\u type\u code上 其中p.id=1001
请注意,在查询中使用多个表时,定义别名可能会很有用,以避免反复写入表的全名。此外,如果您正在使用别名,那么最好通过别名显式指定每个字段的源表我建议将其作为sql联接可视化的好地方:并尝试在sqlzoo.net上使用联接教程
SELECT
p.id, p.first_name, p.last_name, p.address_code, p.customer_type_code,
a.address_name,
t.customer_type_name
FROM
persons p
JOIN ref_address a
ON p.address_code = a.address_code
JOIN ref_customer_type_code t
ON p.customer_type_code = t.customer_type_code
WHERE
p.id = 1001