2016-07-09 66 views
-2

我一直在尝试联合三个并加入一个表,我成功地选择了只使用内部联接,并且还结合了内部联接和联合BU我的问题是获得答复ID我有尝试了很多事情,以显示响应ID,但一直得到错误,而其他做工精细Sql选择内部联接和联合3表

娄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'); 

我能够输出由该

型>它从

EID>来显示主帖ID的

标题>显示文章标题

所有者>显示帖子作者

STIME展>展会时间

描述>显示帖子内容

现在我的问题是显示replys> RID,我想也把它放在我的php

+0

请大家我需要解决这个问题不要投我的问题 – Frank

+2

用更多的附加信息发布您的问题。 –

+0

@ B.Balamanigandan这是我对这个问题唯一的解释,如果你想我附上我的所有代码,才可以帮助我,我会 – Frank

回答

1

你必须有相同数量的列,每个SELECT的列必须是相同的数据类型相同的顺序。因此,如果您想要回复ID,则必须为每个未选择的选择添加空值。

$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'); 
+0

对不起,它的工作,非常感谢 – Frank

+0

@Frank没问题。下一次遇到SQL查询时遇到问题,请尝试在MySQL工作台或phpmyadmin中运行它,或者运行SQL查询所需的任何工具。这将帮助您快速识别错误。 – Terminus