Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.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 MySQL选择连接多个表_Php_Mysql_Select_Join_Union All - Fatal编程技术网

Php MySQL选择连接多个表

Php MySQL选择连接多个表,php,mysql,select,join,union-all,Php,Mysql,Select,Join,Union All,我基本上有两组表。”道具和效用。每个都有大约4个表,我使用UNION ALL连接了这些表 我需要选择具有必要位置和睡眠的属性,这些属性不会出现在特定日期范围的可用性表中 property tables... 'props_01', 'props_02', 'props_03', 'props_04' id code location sleeps 1 7A06E91875 devon 2 2 440ac2664c

我基本上有两组表。”道具和效用。每个都有大约4个表,我使用UNION ALL连接了这些表

我需要选择具有必要位置和睡眠的属性,这些属性不会出现在特定日期范围的可用性表中

property tables... 'props_01', 'props_02', 'props_03', 'props_04'
   id    code         location    sleeps
   1     7A06E91875   devon       2
   2     440ac2664c   cornwall    4
   5     0474d4882b   devon       2


availability tables... 'avail_01', 'avail_02', 'avail_03', 'avail_04'
   id    prop_code     date
   1     440ac2664c    20130208
   2     440ac2664c    20130209
   3     440ac2664c    20130210
   4     440ac2664c    20130211
   5     440ac2664c    20130212
这些可用性表包含所有预订日期。因此,我只希望从属性表中选择没有指定日期范围可用性记录的属性表。这就是我想做的

(avail.date != '20130209' AND avail.date != '20130210' AND avail.date != '20130211' AND avail.date != '20130212' AND avail.date != '20130213') OR (avail.date != '20130210' AND avail.date != '20130211' AND avail.date != '20130212' AND avail.date != '20130213' AND avail.date != '20130214') 
我还需要对位置和睡眠的属性表应用过滤器

下面是我的查询,除了包括可用性之外,它还可以做任何事情,这很好,但是我不知道如何最好地修改它来同时查询可用性表

SELECT prop.* FROM (SELECT * FROM `props_01` UNION ALL SELECT * FROM `props_02` UNION ALL SELECT * FROM `props_03` UNION ALL SELECT * FROM `props_04`) prop WHERE prop.location='Devon' AND prop.sleeps>='4' ORDER BY prop.sleeps ASC

如果要查找另一个表中不存在的行,则需要左联接。有关更多信息,请参见此:


加入3个表:表1、表2、表3

从表1左键选择*连接表1上的表2。id=表2.id
左连接表2上的表3.id=表3.id

为什么要分组?为什么不一张表显示属性,一张表显示可用性?因为我使用不同的源,所以希望每个源都有一个单独的表,可用性也一样。我想为每个源使用单独的表,因为我的高级搜索将允许人们选择源,因此,我认为这会更快,因为我可以为每个属性组查询一个表,因为一组属性的可用性表有超过150k条记录。我所说的“源”是指可以选择要查询的属性表,但99%的时间我需要查询所有源(属性表)这是个糟糕的主意。如果向数据库中添加属性意味着对结构和所有相关查询进行更改,那么这意味着您正在做一些非常错误的事情!最好将数据放在单独的表中,而不是查询一个包含近500k记录的大型表!!这有多可怕!?解释…谢谢,但是如果我想查询多个表,那该怎么办呢?我将UNION ALL应用于两组表,但查询抛出了一个错误