我最近注意到UNION功能,并在W3Schools上看到你可以联合两个表,但是我想要联合三个...我已经编写了一段代码,但它不起作用,因为我收到错误。是否可以将三个表联合起来,我该如何实现这一目标?谢谢!
ERROR:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\Legendary\new\search.php on line 54
CODE:
// Fill up array with names
$sql2 = mysql_query("SELECT * FROM members UNION ALL SELECT * FROM clans UNION ALL SELECT * FROM tournaments");
while($row=mysql_fetch_array($sql2)) {
$a[]=$row['name'];
$b[]=$row['id'];
}
答案 0 :(得分:4)
您需要从每个表中以相同的顺序返回相同数量的列和数据类型(因为mySQL
不支持SQL标准的UNION CORRESPONDING
语法)。如果表格不完全匹配,但确实有一些您想要UNION
的类似列,那么只需在SELECT
子句中为UNION
的每个部分指定那些列。
即使表模式匹配,最好指定列名;否则在将来向其中一个表添加列会破坏查询。
例如,如果所有表都有Name列,则可以执行以下操作:
select Name from members
UNION ALL
select Name from clans
UNION ALL
select Name from tournaments
答案 1 :(得分:3)
UNION是一个SQL命令,可以将 STACK 的结果放在其他结果之上,这就是为什么你需要相同数量的列。如果您想查看某些成员参加过哪些部落和比赛,那么您需要加入他们。