UNION SQL问题

时间:2012-03-05 16:16:41

标签: php mysql sql union union-all

我最近注意到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'];
            }

2 个答案:

答案 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 的结果放在其他结果之上,这就是为什么你需要相同数量的列。如果您想查看某些成员参加过哪些部落和比赛,那么您需要加入他们。