Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.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 SQL SELECT查询不工作-找不到错误_Php_Mysql_Sql_Select - Fatal编程技术网

Php SQL SELECT查询不工作-找不到错误

Php SQL SELECT查询不工作-找不到错误,php,mysql,sql,select,Php,Mysql,Sql,Select,以下选择查询用于从多个表tbl_books、tbl_author和tbl_books主题中搜索关键字“law” 此查询出现错误。请帮助我。您需要三个单独的选择,可能还需要一个通配符搜索: SELECT * FROM tbl_books WHERE title LIKE '%law%' LIMIT 0,30 SELECT * FROM tbl_books_author WHERE title LIKE '%law%' LIMIT 0,30 SELECT * FROM tbl_books_su

以下选择查询用于从多个表tbl_books、tbl_author和tbl_books主题中搜索关键字“law”


此查询出现错误。请帮助我。

您需要三个单独的选择,可能还需要一个通配符搜索:

SELECT *
FROM tbl_books
WHERE title LIKE '%law%'
LIMIT 0,30

SELECT *
FROM tbl_books_author 
WHERE title LIKE '%law%'
LIMIT 0,30

SELECT *
FROM tbl_books_subject
WHERE title LIKE '%law%'
LIMIT 0,30
如果返回兼容的结果,则可以合并它们:

SELECT 'book   ', title
FROM tbl_books
WHERE title LIKE '%law%'

UNION ALL

SELECT 'author ', author
FROM tbl_books_author 
WHERE title LIKE '%law%'

UNION ALL

SELECT 'subject', subject
FROM tbl_books_subject
WHERE title LIKE '%law%'
LIMIT 0,30

您可以在单个查询中实现这一点,但您需要在其他表中有一些外键。这里检查下面的代码

SELECT b.*, ba.*, bs.* FROM tbl_books as b
    FULL OUTER JOIN tbl_books_author as ba ON ba.book_id=b.id
    FULL OUTER JOIN tbl_books_subject as bs ON bs.book_id=b.id
WHERE b.title LIKE 'law' OR ba.author LIKE 'law' OR bs.subject LIKE 'law' LIMIT 0, 30;
深入查看查询,您可以看到我使用了tbl_books.id进行连接,该连接应该位于其他表中,以标识特定记录


希望这对您有所帮助。

错误是什么?表之间没有连接,因此最终会出现交叉连接。该错误可能表示空间不足:-该错误是内部服务器错误。请提供表的DDL以及您正在查看的预期结果。问题还不清楚。内部服务器错误听起来更像是php脚本被破坏了,而不是查询。好吧,查询结果可能被破坏了,但这不会导致503s,php错误doDoes LIMIT 0,30应用于整个查询,或者只是最后一个选择?如果我使用或和使用LIKE关键字一起编写,会不会有问题。当我在上面显示的代码中运行我以前的代码时,显示行0-29 1759260总计,查询耗时5.1206秒。你能解释一下为什么会出现这种情况吗?如果前面的代码表示一个查询中的所有三个表都没有连接,那么这表明你通过交叉连接表创建了一个巨大的愚蠢结果集。要得到其中任何一列包含“law”的结果,你需要使用完全外部连接,而不是使用deadok bro,我会更改它。谢谢您的建议。@dnoeth mysql不支持完全外部连接。现在这个“正确”的答案被严重破坏了。@pala_2;:所以它又回到了三个不同的选择:-
SELECT b.*, ba.*, bs.* FROM tbl_books as b
    FULL OUTER JOIN tbl_books_author as ba ON ba.book_id=b.id
    FULL OUTER JOIN tbl_books_subject as bs ON bs.book_id=b.id
WHERE b.title LIKE 'law' OR ba.author LIKE 'law' OR bs.subject LIKE 'law' LIMIT 0, 30;