我正在开发一个使用程序化PHP和phpmyadmin和innodb引擎的项目。
我不是开发人员,不是专业人员,我只是喜欢玩PHP,所以如果我说错了(或者如果你想建议我),请记住
使用面向对象的PHP):)。
我有类似的东西(举个例子,实际上我有很多链接的表和字段):
request(id, customer_id, field1, contact_id, field2)
customer(id, customer)
contact(id, contact)
我需要在“请求”表中用引用的值(不带ID号)返回行ID=1,所以我的结果必须是:
"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
?我尝试在第一行中拆分field1、field2 select和change顺序,如下所示:
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”
我希望一切都很清楚,提前感谢大家,并祝贺你们在整个互联网上找到了一个最有用的页面:)