Php 如何在一个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

我想从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_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