晚上,我不确定我在这里问什么,但我会尽力解释。我不是最好的SQL,但我确实尝试...
SELECT
qu.job_id, qu.engineer_id, qu.id AS `quote_id`,
jb.author, jb.image_ref, jb.job_title
FROM
`ecom_quotes` qu, `ecom_jobs` jb
WHERE
jb.author = 1
AND
qu.job_id = jb.image_ref
GROUP BY
jb.image_ref
我使用上面的内容列出了用户发布的作业,并根据作业ID从其他表中获取其他信息。
问题在于,如果作业没有为其发布引号,则不会显示(qu.job_id = jb.image_ref)。
因此,作为快速修复(或者我认为),我用
替换它( ( qu.job_id = jb.image_ref ) OR ( jb.image_ref != '' ) )
哪个确实有效但当没有与之关联的引用时它会返回一个引用ID。
我有什么可以做的吗?
答案 0 :(得分:5)
您需要使用LEFT JOIN
。
即使ecom_jobs
中没有匹配的记录,这仍会返回ecom_quotes
的记录。
编辑:改变表格的顺序......
SELECT
qu.job_id, qu.engineer_id, qu.id AS `quote_id`,
jb.author, jb.image_ref, jb.job_title
FROM
`ecom_jobs` jb
LEFT JOIN `ecom_quotes` qu ON qu.job_id = jb.image_ref
WHERE
jb.author = 1
GROUP BY
jb.image_re
答案 1 :(得分:0)
为什么不尝试:
SELECT
qu.job_id, qu.engineer_id, qu.id AS `quote_id`,
jb.author, jb.image_ref, jb.job_title
FROM
`ecom_quotes` qu
LEFT JOIN
`ecom_jobs` jb ON qu.job_id = jb.image_ref
WHERE
jb.author = 1
GROUP BY
jb.image_ref