晚上,我不确定我在这里问什么,但我会尽力解释.我不是最好的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
Run Code Online (Sandbox Code Playgroud)
我使用上面的方法列出用户发布的作业,并根据作业ID从其他表中获取其他信息.
问题在于,如果作业没有为其发布引号,则不会显示(qu.job_id = jb.image_ref).
所以作为一个快速修复(或者我认为),我用它替换了它
( ( qu.job_id = jb.image_ref ) OR ( jb.image_ref != '' ) )
Run Code Online (Sandbox Code Playgroud)
哪个确实有效,但是当没有与之关联的报价时它会返回一个报价ID.
有什么我可以做的吗?
你会想要使用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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1228 次 |
| 最近记录: |