gpt4 book ai didi

mysql - 从数据库获取 "non-existing"值

转载 作者:行者123 更新时间:2023-11-29 13:42:26 24 4
gpt4 key购买 nike

我的数据库遇到问题。我有三个相应的表,第一个表中包含一些页面,第二个表中包含一些字段。第三个是一个表格,其中包含页面中所有字段的内容。

表格:

  • 页面(PageID、名称)

  • 字段(FieldID, FieldName);

  • 页面字段(PageFieldID、FieldID、PageID)

  • pagefieldcontents(PageFieldContentID、PageFieldID、FieldID、PageID、内容)

我需要的是确保,即使表“pagefields”中的字段没有值,但如果该字段与页面相关(在 pagefields 表中),它将作为值为空字符串的行。

我现在正在做的事情如下:

SELECT
pfc.ContentID as PFC_ContentID,
pfc.Content as PFC_FieldContent,
pfc.FieldID as PFC_FieldID
FROM
pagesfieldcontents pfc
INNER JOIN
pagefields pf
ON pf.PageID = pfc.PageID
INNER JOIN
fields ptf
ON pf.FieldID = ptf.FieldID
INNER JOIN
pages p
ON p.PageID = pf.PageID
WHERE
(some where-statement)
ORDER BY
somefield desc

希望您能理解我的问题 - 祝您有美好的一天。

最佳答案

内部连接要求连接表中必须有一行才能返回第一个 tabke 行。但是您可能有字体包含内容的字段,并且您希望返回这些内容...

将所有 INNER 连接更改为 LEFT 连接:

SELECT
pfc.ContentID as PFC_ContentID,
pfc.Content as PFC_FieldContent,
pfc.FieldID as PFC_FieldID
FROM pages p
LEFT JOIN pagefields pf
ON p.PageID = pf.PageID
LEFT JOIN fields ptf
ON pf.FieldID = ptf.FieldID
LEFT JOIN pagesfieldcontents pfc
ON p.PageID = pfc.PageID
AND pf.FieldID = pfc.FieldID
WHERE some where-statement
ORDER BY somefield desc

我还根据我猜您的需要重新排列了表顺序和连接条件。

关于mysql - 从数据库获取 "non-existing"值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17902528/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com