Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用union table sql查询选择计数_Php_Sql_Sql Server - Fatal编程技术网

Php 使用union table sql查询选择计数

Php 使用union table sql查询选择计数,php,sql,sql-server,Php,Sql,Sql Server,我正在进行搜索分页,我尝试使用union从三个表中选择count,但得到的错误如下 致命错误:无法在第106行的/home/plooks/public\u html/user/test.php中通过引用传递参数2这是我的表结构 表1名称>>博客帖子 | bid | title | body | author | |----- |------- |------------- |-------- | | 1 | new | hel

我正在进行搜索分页,我尝试使用union从三个表中选择count,但得到的错误如下
致命错误:无法在第106行的/home/plooks/public\u html/user/test.php中通过引用传递参数2这是我的表结构

表1名称>>博客帖子

| bid   | title     | body          | author    |
|-----  |-------    |-------------  |--------   |
| 1     | new       | hello new     | you       |
| 2     | cast      | broadcast     | me        |
| 3     | hack      | who hack us   | you       |
表2名称>>forumnew

| fid   | ftitle    | fbody         | user  |

|-----  |-------    |-------------  |--------   |
| 1     | new forum | hello new     | you       |
| 2     | cast me   | broadcast     | me        |
| 3     | hack you  | who hack him  | us        |
表3名称>>下载

| did   | file      | disc          | type      |

|-----  |-------    |-------------  |--------   |
| 1     | whoweare  | hello new     | php       |
| 2     | cast      | broadcast     | html      |
| 3     | hack      | who hack us   | c++       |
SQL查询

SELECT COUNT(id) FROM (
    SELECT 'post' AS type, BID AS id FROM blogpost
    UNION
    SELECT 'jail' AS type, jid AS id FROM forumnew
    UNION
    SELECT 'article' AS type, TID AS id FROM download
)csl WHERE title LIKE :search OR title LIKE :search")

查询中有一个错误,临时表
csl
中没有
标题
,因此不能在
WHERE
子句中使用。第二个
或类似标题:search
也是多余的。如果不想对id进行不同的计数,则不需要其他列,只需要筛选标题列,结果将是相同的

SELECT COUNT(*) FROM (
    SELECT title FROM blogpost
    UNION
    SELECT ftitle AS title FROM forumnew
    UNION
    SELECT disc AS title FROM download
) csl WHERE title LIKE :search


哪个表有description列?@artm我已经编辑了我的帖子,你的代码是什么样子的?类似的问题:@mulquin没有解决我的问题,我认为我的查询是错误的。你现在有两个类似标题的搜索。但是我认为你需要把它放在你的blogpost内部选择下,而不是外部查询下。
SELECT
  (SELECT COUNT(*) FROM blogpost WHERE title LIKE :search) +
  (SELECT COUNT(*) FROM forumnew WHERE ftitle LIKE :search) +
  (SELECT COUNT(*) FROM download WHERE disc LIKE :search)