【问题标题】:Trying to get all results from the database using a left join while using WHERE statements尝试在使用 WHERE 语句时使用左连接从数据库中获取所有结果
【发布时间】:2011-07-29 07:02:47
【问题描述】:

我做了一些研究,我认为我正在寻找的东西与我通过搜索能够找到的东西相反。

我目前正在尝试从一个表中提取一堆数据并将其与第二个表匹配。我正在使用左连接来完成此操作。我使用的代码是:

SELECT pn.id FROM pn 
LEFT OUTER JOIN p ON pn.part_number = p.part_number 
WHERE pn.programID = '13' 
AND pn.visible = '1' 
AND pn.type_id = '11' 
AND (p.user_code = '01045' OR p.user_code IS NULL) 
GROUP BY pn.part_number 
ORDER BY p.quantity DESC LIMIT 0,25 

只要用户代码与提供的值匹配或 p 表中不存在部件号,此查询就可以很好地工作。我遇到的问题是,如果零件号在 p 表中但在不同的用户代码下,则零件号不会被拉取。

这不是问题,除非我需要显示 pn 表中的所有部件号,无论它们是否在 p 表中。 p 包含我需要排序的数量,即使我想要 pn 表中的所有信息。

有谁知道我如何从 pn 表中获取所有信息,同时即使部件号匹配但用户代码不匹配,仍然能够按 p.quantity 对信息进行排序?

谢谢! 安德鲁

【问题讨论】:

    标签: php mysql sql phpmyadmin


    【解决方案1】:

    p.user_code 的测试作为LEFT JOIN 条件的一部分,而不是在WHERE 子句中进行。

    SELECT pn.id FROM pn 
    LEFT OUTER JOIN p ON pn.part_number = p.part_number 
        AND p.user_code = '01045'
    WHERE pn.programID = '13' 
    AND pn.visible = '1' 
    AND pn.type_id = '11' 
    GROUP BY pn.part_number 
    ORDER BY p.quantity DESC LIMIT 0,25 
    

    【讨论】:

    • 你是个天才乔!非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-04
    • 2012-06-14
    • 1970-01-01
    • 1970-01-01
    • 2019-03-07
    相关资源
    最近更新 更多