所以我的数据库里有几张桌子。假设我有
CREATE TABLE ARTICLE (
id INT NOT NULL IDENTITY PRIMARY KEY,
time_stamp BIGINT(20) NOT NULL UNIQUE,
body TEXT NOT NULL,
title VARCHAR(255),
web_address VARCHAR(255) NOT NULL UNIQUE
);和
CREATE TABLE BLOG (
id INT NOT NULL IDENTITY PRIMARY KEY,
time_stamp BIGINT(20) NOT NULL UNIQUE,
body TEXT NOT NULL,
title VARCHAR(255) NOT NULL UNIQUE
);和
CREATE TABLE LINKTABLE (
id INT NOT NULL IDENTITY PRIMARY KEY,
parent_id INT,
quote_id INT,
article_id INT,
blog_id INT,
FOREIGN KEY (parent_id) REFERENCES Blog(id)
ON DELETE CASCADE,
FOREIGN KEY (blog_id) REFERENCES Blog(id)
ON DELETE CASCADE,
FOREIGN KEY (article_id) REFERENCES Article(id)
ON DELETE CASCADE,
FOREIGN KEY (quote_id) REFERENCES Quote(id)
ON DELETE CASCADE
);现在,如果我有以下命令:
SELECT b.id as blog_id, l.blog_id as linktable_blog_id, l.id as linktable_id
FROM linktable l
LEFT JOIN blog b ON
(l.blog_id=b.id OR l.parent_id=b.id)在链接表和博客中存在满足约束条件的条目时,如我所期望的那样,返回如下:
{"blog_id":1,"linktable_blog_id":1,"linktable_id":1},不过,假设我有
SELECT a.id as article_id, b.id as blog_id, l.blog_id as linktable_blog_id, l.id as linktable_id
FROM linktable l
LEFT JOIN blog b ON
(l.blog_id=b.id OR l.parent_id=b.id)
LEFT JOIN article a ON
l.article_id=a.id在链接表中既没有文章也没有条目的地方,我会被退回。
{}//empty我想要做的是
{"blog_id":1,"linktable_blog_id":1,"linktable_id":1, "article_id": null}有什么建议吗?
发布于 2019-11-07 13:48:49
如果您想保留所有博客,那么blog需要成为LEFT JOIN中的第一个表。
SELECT a.id as article_id, b.id as blog_id,
l.blog_id as linktable_blog_id, l.id as linktable_id
FROM blog b LEFT JOIN
linktable l
ON l.blog_id = b.id OR l.parent_id = b.id LEFT JOIN
article a
ON l.article_id = a.id;https://stackoverflow.com/questions/58750118
复制相似问题