Php MYSQL这个连接太冗长了还是这是唯一的方法?有点不起作用

Php MYSQL这个连接太冗长了还是这是唯一的方法?有点不起作用,php,mysql,sorting,join,query-optimization,Php,Mysql,Sorting,Join,Query Optimization,我正在做一个项目,使用程序化PHP和phpmyadmin以及InnoDB引擎。 我不是开发人员,也不是专业人士,我只是喜欢玩PHP,所以如果我说错了什么或者你想建议我,请记住这一点 要使用面向对象的PHP:。 我有这样的例子,实际上我有很多链接表和字段: request(id, customer_id, field1, contact_id, field2) customer(id, customer) contact(id, contact) 我需要在请求表中返回行id=1,其中包含引用的值

我正在做一个项目,使用程序化PHP和phpmyadmin以及InnoDB引擎。 我不是开发人员,也不是专业人士,我只是喜欢玩PHP,所以如果我说错了什么或者你想建议我,请记住这一点 要使用面向对象的PHP:。 我有这样的例子,实际上我有很多链接表和字段:

request(id, customer_id, field1, contact_id, field2)
customer(id, customer)
contact(id, contact)
我需要在请求表中返回行id=1,其中包含引用的值,而不是id号,因此我的结果必须是:Company X,value1,value2,John

我可以通过以下方式获得:

SELECT * FROM (
    (
    SELECT customer.customer
    FROM customer
    JOIN request ON customer.id=request.customer_id
    WHERE request.id=1
    ) as result1
    JOIN 
    (
    SELECT request.field1, request.field2
    FROM request
    WHERE request.id=1
    ) as result2
    JOIN 
    (
    SELECT contact.contact
    FROM contact
    JOIN request ON contact.id=request.contact_id
    WHERE request.id=1
    ) as result3
)
我不知道是否可以省略resultX别名,但使用phpmyadmin时,如果不能省略,我需要它们,否则会出现错误

现在我的问题是:

1-这是可行的,但我觉得这不是编写代码的正确方式,我认为可以用更好/更智能的方式,用更少的代码来实现,但我不知道如何实现。 2-如何按不同顺序列出结果?比如:field2,customer,contact,field1?我尝试在第一行拆分字段1、字段2选择并更改顺序,如下所示:

SELECT result2,result1,result4,result3 FROM (
    (
    SELECT customer.customer
    FROM customer
    JOIN request ON customer.id=request.customer_id
    WHERE request.id=1
    ) as result1
    JOIN 
    (
    SELECT request.field1
    FROM request
    WHERE request.id=1
    ) as result2
    JOIN
    SELECT request.field2
    FROM request
    WHERE request.id=1
    ) as result3
    JOIN 
    (
    SELECT contact.contact
    FROM contact
    JOIN request ON contact.id=request.contact_id
    WHERE request.id=1
    ) as result4
)
但它返回:1054-字段列表中的未知列“result2”


我希望一切都清楚,提前感谢所有人,并祝贺您拥有整个互联网上最有用的页面之一:

您可以在同一选择中进行多个连接

SELECT customer.customer, request.field1, request.field2, contact.contact
FROM request 
JOIN customer ON request.customer_id = customer.id
JOIN contact  ON request.contact_id = contact.id

您可以按所需顺序放置字段。

错误是因为result2是一个表名,您试图将其用作字段名。您可以使用AS@erre将字段的别名更改为其他别名-无论何时尝试编写子查询,请三思。以其他方式编写查询通常更简单、更快。有一些例外。是的,我写在这里正是因为这个原因,对我的问题的质疑确实有效,但正如我所说的,我觉得有点不对劲,谢谢你的建议