使用我的查询从多个表中搜索关键字,

时间:2015-05-15 08:05:24

标签: mysql select php

我想搜索" law"来自三个表tbl_bookstbl_books_authortbl_books_subject。我正在运行以下查询。

SELECT *
FROM tbl_books p, tbl_books_author d, tbl_books_subject m
WHERE p.title = 'law'
OR d.author = 'law'
OR m.subject = 'law'
LIMIT 0,30;

当我运行此查询时,它显示在顶部"显示行0 - 29(总共1759260,查询花了5.1206秒)"。你能解释一下为什么会这样吗。

这是什么原因?

1 个答案:

答案 0 :(得分:0)

正如已经指出的那样,你正在做一个笛卡尔积,即将第一张表中的所有记录与第二张表和3d表中的所有记录相匹配。

您可能有一些与表相关的外键,因此您的查询应如下所示:

SELECT *
FROM tbl_books p 
INNER JOIN tbl_books_author d ON inner_join_condition1
INNER JOIN tbl_books_subject m ON inner_join_condition2
WHERE p.title = 'law'
OR d.author = 'law'
OR m.subject = 'law'
LIMIT 0,30;

用表格

填写你的inner_join_conditions