SELECT
*
FROM
(
SELECT
qu.job_id AS `qu_job_id` , qu.engineer_id, qu.id AS `quote_id` , jb.author, jb.job_id, jb.job_title, SUBSTRING(jb.job_description, 1, 200) AS `short_description` , jb.image_ref, jb.timestamp
FROM
jobs AS `jb`
LEFT JOIN
quotes AS `qu`
ON
qu.job_id = jb.job_id
WHERE
jb.author = " . ID . "
GROUP BY
jb.job_id
ORDER BY
jb.timestamp DESC
) AS `jobs`
LEFT JOIN
(
SELECT
COUNT(id) AS `total_replies` , job_id
FROM
quote_comments
WHERE
job_id = jobs.job_id
) AS `replies`
ON
replies.job_id = jobs.job_id
我的问题使用结果从子查询是否有可能(以上不作为是工作)把这个结果从第一子查询,以防止在第二比较? (即job_id = jobs.job_id
)SQL - 另一个子查询
问候
编辑
(这里作为评论有更多的空间)
SELECT
qu.engineer_id,
qu.id AS `quote_id`,
jb.author,
jb.job_id,
jb.job_title,
SUBSTRING(jb.job_description, 1, 200) AS `short_description` ,
jb.image_ref,
jb.timestamp,
count(qu.id) AS comment_count
FROM
" . JOBS . " AS `jb`
LEFT JOIN
" . QUOTES . " AS `qu`
ON
qu.job_id = jb.job_id
WHERE
jb.author = " . ID . "
GROUP BY
jb.job_id,
qu.engineer_id,
qu.id,
jb.author,
jb.job_title,
SUBSTRING(jb.job_description, 1, 200),
jb.image_ref,
jb.timestamp
ORDER BY
jb.timestamp DESC
我最初的问题是不正确略。我实际上想要得到报价的数量,而不是报价评论。
上述建议在下面看起来似乎乍一看,但它返回的工作有多个报价submited×次数与每个报价计数为1。有任何想法吗?
是的,它是可能的。首先,你不能在子查询中使用ORDER BY。这是你得到的错误吗? – 2012-01-27 20:06:42
它看起来像你试图得到一份工作,得到任何工作报价(或没有),以及作业的报价评论数。如果这是正确的,我想我知道答案。 – Hasteur 2012-01-27 20:11:37
我想要做的是从3个表中获取信息。所有这三个在comman,job_id和author_id中都有两个东西。我想要获得所有工作,并且还要获得1个查询中每个工作收到的评论数量。 (p.s.顺序工作正常) – 2012-01-27 20:11:44