mysql,从多个表中选择数据,表中没有公共字段

时间:2018-06-20 14:12:23

标签: php mysql

我有3张桌子。图片如下。

  1. 新闻

enter image description here

  1. 页面

enter image description here

  1. 社区

enter image description here

我想select来自这些表的数据,因为这些表没有公共字段。

我有一个搜索字段,用户输入搜索词,然后mysql查询应在这些表中搜索并显示结果。但是我不明白如何在没有公共字段的情况下选择数据。

我可以在一个表中搜索,但不能在多个表中搜索。

我的代码

$search_term = $_REQUEST['search_term'];
$where="select * from community where 1";
if($search_term!=''){
        $where.=" and name like '%$search_term%' or zip like '%$search_term%' or city like '%$search_term%'or state like '%$search_term%'or location like '%$search_term%' or country like '%$search_term%'";
    }
$db = new Database();
$results_per_page=5;
$pg=new Paging($db,$where,$current_page,$results_per_page);
$start=$pg->get_start();
$total_pages=$pg->get_total_pages($where);
$result=$db->query("$where  order by id desc limit $start,$results_per_page");
$get_all_communitites = $result;

任何机构都会给我一些提示,如何编写此mysql查询以从多个表中选择数据,而又不使用公共字段?

1 个答案:

答案 0 :(得分:0)

结果必须具有定义的结构。例如,您不能返回20行,其中10列具有“ test”,“ col2”,“ someInt”列,而其中10列具有4列“ col1”,“ someName”,“ age”,“ createdDT”。

例如,如果您有两个表(一个表有3列,第二个表有4列),每个表有10行,并且想要选择所有数据,则有两个选项:

  1. 加入他们。如果您不能在逻辑上连接这些表,那么您将获得所有可能的组合。在我的示例中,您将有100行(10 * 10),其中包含7列。
  2. 联盟。您可以进行两个查询,并假装两者都来自同一个假想表,但是要使其正常工作,两个表必须具有相同的列数。

无论您出于什么原因,都注定要做的事。想象一下MySQL-Tables,例如openCalc,Excel中的巨大工作表...,您必须为每个工作表定义一次列,并且只能在单个列中进行搜索。对任何表中任何列中的任何内容执行“ Ctrl + F”键均无效。