Php 完全外部联接(左联接右联接)MySQL多表

Php 完全外部联接(左联接右联接)MySQL多表,php,mysql,join,union,Php,Mysql,Join,Union,我已经看了其他相关的SO问题,但他们无法为我点击 我有这些桌子: 最后,我想合并这5个表,以便从位置(可能loc_type(int)替换为loc_type_name),从小时(因为它将在loc_id上加入)开始,除了loc_id之外的所有内容,与假日一样,等等 我已经知道如何在MySQL中复制此功能: SELECT * FROM t1 LEFT JOIN t2 ON t1.id = t2.id UNION SELECT * FROM t1 RIGHT JOIN t2 ON t1.id = t2

我已经看了其他相关的SO问题,但他们无法为我点击

我有这些桌子:

最后,我想合并这5个表,以便从位置(可能loc_type(int)替换为loc_type_name),从小时(因为它将在loc_id上加入)开始,除了loc_id之外的所有内容,与假日一样,等等

我已经知道如何在MySQL中复制此功能:

SELECT * FROM t1
LEFT JOIN t2 ON t1.id = t2.id
UNION
SELECT * FROM t1
RIGHT JOIN t2 ON t1.id = t2.id
我让它适用于任何两张桌子,但无法进一步:

SELECT * FROM locations loc 
    LEFT OUTER JOIN location_types locType on locType.id = loc.loc_num 
UNION 
SELECT * FROM locations loc 
    RIGHT OUTER JOIN location_types locType on locType.id = loc.loc_num
UNION
SELECT * FROM locations loc 
    LEFT OUTER JOIN hours shours on loc.loc_num = shours.loc_id 
UNION
SELECT * FROM locations loc 
    RIGHT OUTER JOIN hours shours on loc.loc_num = shours.loc_id
UNION
SELECT * FROM locations loc 
    LEFT OUTER JOIN holiday hol on loc.loc_num = hol.loc_id 
UNION
SELECT * FROM locations loc 
    RIGHT OUTER JOIN holiday hol on loc.loc_num = hol.loc_id 
任何帮助都将不胜感激


注意:可能会有一些额外的列用于位置和其他表,因此最后,我想在其中手动选择所需的列(即从位置选择loc_id、loc_name、loc_phone).

只需查看下面的查询,希望这可以帮助您!以后可以进行相应的修改

这将连接到所有5个表。在这里,我将位置保留为左表,以便在触发此查询后显示所有位置,并且匹配的Id将与此表匹配

SELECT * FROM location LEFT JOIN location_type ON location_type.type_id=location.loc_id
    LEFT JOIN hours ON location.loc_id=hours.loc_id 
    LEFT JOIN holiday ON holiday.loc_id=location.loc_id 
    LEFT JOIN holiday_hours ON holiday.hol_id=holiday_hours.holiday_id

只需看看下面的查询,希望这可以帮助你!以后可以进行相应的修改

这将连接到所有5个表。在这里,我将位置保留为左表,以便在触发此查询后显示所有位置,并且匹配的Id将与此表匹配

SELECT * FROM location LEFT JOIN location_type ON location_type.type_id=location.loc_id
    LEFT JOIN hours ON location.loc_id=hours.loc_id 
    LEFT JOIN holiday ON holiday.loc_id=location.loc_id 
    LEFT JOIN holiday_hours ON holiday.hol_id=holiday_hours.holiday_id

如果包含所需的
full-outer-join
语句(即使MySQL不支持),它实际上会有所帮助。另外,为什么需要
完全外部联接
s?在设计良好的数据库上,外键引用应该是有效的,因此很少需要
完全外部连接
。我正在使用php显示位置及其小时数和其余数据,以前的程序员为每个位置多次重新调用数据库。我想调用数据库一次(除非发生更改),并将数据存储到一个数组中,以使网页速度更快。如果包含所需的
full-outer-join
语句(即使MySQL不支持),这实际上会有所帮助。另外,为什么需要
完全外部联接
s?在设计良好的数据库上,外键引用应该是有效的,因此很少需要
完全外部连接
。我正在使用php显示位置及其小时数和其余数据,以前的程序员为每个位置多次重新调用数据库。我想调用数据库一次(除非发生更改),并将数据存储到一个数组中,以使网页速度更快。如果包含所需的
full-outer-join
语句(即使MySQL不支持),这实际上会有所帮助。另外,为什么需要
完全外部联接
s?在设计良好的数据库上,外键引用应该是有效的,因此很少需要
完全外部连接
。我正在使用php显示位置及其小时数和其余数据,以前的程序员为每个位置多次重新调用数据库。我想调用数据库一次(除非发生更改),然后将数据存储到一个数组中,以使网页更快。我决定采用另一种方法,但由于您的解决方案可以帮助我开始,我将接受您的回答。谢谢我决定走另一条路,但既然你的解决方案能帮助我开始,我就接受你的回答。谢谢我决定走另一条路,但既然你的解决方案能帮助我开始,我就接受你的回答。谢谢