因此,在我原始问题的有用反馈之后,我现在有了这个问题:
SELECT sessions.id, sessions.title, sessions.abstract, sessions.presenters, sessions.proposal_id, proposals.outcomes, proposals.CategorySelection, proposals.research3, proposals.research4, proposals.research5, proposals.research6, proposals.innovation3, proposals.innovation4, proposals.innovation5,proposals.innovation6, proposals.application3, proposals.application4, proposals.application5, proposals.application6, proposals.integration3, proposals.integration4, proposals.integration5, proposals.integration6, proposals.references, proposals.organization
FROM sessions, proposals
INNER JOIN proposals ON proposals.id = sessions.proposal_id
WHERE sessions.id = '$id
LIMIT 1;)
这让我无处可逃。我究竟做错了什么?
原始问题: 我需要从一个表中拉出几个字段,从第二个表中拉出几个字段。标准是名为proposal_id的字段与第二个表的id字段匹配。我很新,所以这就是我到目前为止所做的。它不起作用,但不确定如何使其工作。
(SELECT `title`,`abstract`,`presenters`,`proposal_id` FROM `sessions` WHERE `id`='$id')
UNION
(SELECT `outcomes`,`CategorySelection`,`research3`,`research4`,`research5`,`research6`,`innovation3`,`innovation4`,`innovation5`,
`innovation6`,`application3`,`application4`,`application5`,`application6`,`integration3`,`integration4`,`integration5`,`integration6`,`references`,`organization` FROM `proposals` WHERE `id`= `sessions`.`proposal_id`)
LIMIT 1;
答案 0 :(得分:1)
您需要使用JOIN
而不是UNION
select
s.*,p.*
from `sessions` s
inner join `proposals` p on p.id = s.proposal_id
where s.id = '$id'
这是使用。之间的公共密钥连接两个表的方法。
您可以通过将列名指定为
来选择特定字段而不是。*s.col1,s.col2,p.col1,p.col2
等
答案 1 :(得分:1)
尝试使用JOINS,您可以在其中匹配两个表中的相关字段,这是从多个表中获取记录的最便捷方式
当您想要组合两个查询时使用UNION
select a.id,b.some_field from table1 as a
INNER JOIN table2 as b ON b.prospal_id = a.id