晚上,我不知道我在这里问什么,但我会尽力解释。我不擅长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。
我能做点什么吗?

最佳答案

您需要使用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

关于mysql - SQL-作业表-如果不匹配,则返回值为null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8934257/

10-11 02:04