0

有人从我在 Stack Overflow 上提出的上一个问题中给了我下面的查询。它应该从两个表中提取“submissionid”,称为submissionaddresses,其中zip = '$zip'。(“submissionid”和“zip”都出现在两个表中。)

然后,我想查找与所有这些“submissionid”相对应的字段“title”。“标题”字段仅出现在表格提交中。

然后,我希望查询生成所有结果“标题”的列表。

我怎样才能修改查询来做到这一点?下面的查询似乎省略了从提交结果。

$sqlStr = "SELECT s.title, s.points, s.submissionid
         FROM submission s 
         INNER JOIN addresses ad
         on ad.submissionid = s.submissionid
         WHERE ad.zip = '$zip'
     ORDER BY s.points DESC, s.title ASC";
4

2 回答 2

0

不确定这是否是您想要的。

将您的原始查询放入子查询中,并选择具有相同提交 id 的所有提交

SELECT
  title,
  points,
  submissionid
FROM submission
WHERE submissionid IN (
  # Original Query
  SELECT s.submissionid
  FROM submission s
    JOIN addresses ad ON ad.submissionid = s.submissionid
  WHERE ad.zip = '$zip'
)
ORDER BY 
  points DESC, 
  title ASC
于 2012-06-05T00:42:52.153 回答
0

只需添加OR s.zip = '$zip'到您的WHERE条款。通过一些额外的整理,您的查询变为:

SELECT   submission.title, submission.points, submission.submissionid
FROM     submission JOIN addresses USING (submissionid)
WHERE    submission.zip = '$zip' OR addresses.zip = '$zip'
ORDER BY submission.points DESC, submission.title ASC
于 2012-06-05T00:31:03.203 回答