Sql select inner join and union 3 表
Sql select inner joine and union 3 tables
我一直在尝试合并三个并加入一个 table,我成功地选择了仅使用内部联接并且还结合了内部联接和联合,但我的问题是获得回复 ID 我已经尝试了很多显示回复 ID 但在其他工作正常时不断出错的事情
下面sql给我这个
//$dsnnot->prepare("SELECT * FROM replys r INNER JOIN blog_post b ON r.rid = b.BID WHERE b.UserName = :ownerna AND r.read = 1");
$dsnnot->prepare('SELECT * FROM (
SELECT "post" AS type, BID AS eid, blog_title AS title, Time AS stime, blog_body AS description, UserName AS owner FROM blog_post b
INNER JOIN replys r ON r.rid = b.BID WHERE b.action = "active" AND r.read = 1
UNION
SELECT "jaile" AS , jid AS eid, orgname AS title, jaildate AS stime, OrgDescription AS description, jailorgnowner AS owner FROM jailorgname
UNION
SELECT "articl" AS type, TID AS eid, Atitle AS title, Atime AS stime, Abody AS description, Auser AS owner FROM articlespost
) foo WHERE owner = :ownerna');
我是这样输出的
type > Show where it came from
eid > Show main post id's
title > Show post title
owner > Show post author
stime > Show time
description > Show post content
现在我的问题是显示 replys
> RID,我也想把它放在我的 php
您必须具有相同数量的列,并且每个 SELECT 中的列必须具有相同的数据类型和相同的顺序。因此,如果您想要回复 ID,则必须为每个 select 添加一个空值,而不是 select。
$dsnnot->prepare('
SELECT *
FROM (
SELECT
"post" AS type,
BID AS eid,
blog_title AS title,
Time AS stime,
blog_body AS description,
UserName AS owner,
r.replyID
FROM blog_post b
INNER JOIN replys r ON r.rid = b.BID
WHERE b.action = "active" AND r.read = 1
UNION
SELECT
"jaile" AS type,
jid AS eid,
orgname AS title,
jaildate AS stime,
OrgDescription AS description,
jailorgnowner AS owner,
null AS replyID
FROM jailorgname
UNION
SELECT
"articl" AS type,
TID AS eid,
Atitle AS title,
Atime AS stime,
Abody AS description,
Auser AS owner,
null AS replyID
FROM articlespost
) foo
WHERE owner = :ownerna');
我一直在尝试合并三个并加入一个 table,我成功地选择了仅使用内部联接并且还结合了内部联接和联合,但我的问题是获得回复 ID 我已经尝试了很多显示回复 ID 但在其他工作正常时不断出错的事情
下面sql给我这个
//$dsnnot->prepare("SELECT * FROM replys r INNER JOIN blog_post b ON r.rid = b.BID WHERE b.UserName = :ownerna AND r.read = 1");
$dsnnot->prepare('SELECT * FROM (
SELECT "post" AS type, BID AS eid, blog_title AS title, Time AS stime, blog_body AS description, UserName AS owner FROM blog_post b
INNER JOIN replys r ON r.rid = b.BID WHERE b.action = "active" AND r.read = 1
UNION
SELECT "jaile" AS , jid AS eid, orgname AS title, jaildate AS stime, OrgDescription AS description, jailorgnowner AS owner FROM jailorgname
UNION
SELECT "articl" AS type, TID AS eid, Atitle AS title, Atime AS stime, Abody AS description, Auser AS owner FROM articlespost
) foo WHERE owner = :ownerna');
我是这样输出的
type > Show where it came from
eid > Show main post id's
title > Show post title
owner > Show post author
stime > Show time
description > Show post content
现在我的问题是显示 replys
> RID,我也想把它放在我的 php
您必须具有相同数量的列,并且每个 SELECT 中的列必须具有相同的数据类型和相同的顺序。因此,如果您想要回复 ID,则必须为每个 select 添加一个空值,而不是 select。
$dsnnot->prepare('
SELECT *
FROM (
SELECT
"post" AS type,
BID AS eid,
blog_title AS title,
Time AS stime,
blog_body AS description,
UserName AS owner,
r.replyID
FROM blog_post b
INNER JOIN replys r ON r.rid = b.BID
WHERE b.action = "active" AND r.read = 1
UNION
SELECT
"jaile" AS type,
jid AS eid,
orgname AS title,
jaildate AS stime,
OrgDescription AS description,
jailorgnowner AS owner,
null AS replyID
FROM jailorgname
UNION
SELECT
"articl" AS type,
TID AS eid,
Atitle AS title,
Atime AS stime,
Abody AS description,
Auser AS owner,
null AS replyID
FROM articlespost
) foo
WHERE owner = :ownerna');