在同一表上的SQL UNION 2 SELECT

时间:2018-11-25 13:03:00

标签: php sql mysqli

我在同一张表“ contratto”上有2个SELECT;在php(和mysql)中,我这样做的是:

$sql_1=" SELECT * FROM contratto WHERE  id_cliente='2'   " ;
$sql_2=" SELECT * FROM contratto  JOIN cliente ON  contratto.id_cliente=cliente.id WHERE cliente.id_rivenditore = '2'  " ;
$sql= "(" . $sql_1 . ") UNION ALL (" . $sql_2 .")  ; ";
mysqli_query($connect, $sql);
while($row = mysqli_fetch_assoc($risultato_query)) { ..... }

两个SQL查询$ sql_1和$ sql_2分别工作正常。 查询$ sql($ sql_1和$ sql_2的联合)不起作用,即:

( SELECT * FROM contratto WHERE id_cliente=’2′ ) UNION ALL ( SELECT * FROM contratto JOIN cliente ON contratto.id_cliente=cliente.id WHERE cliente.id_rivenditore = ‘2’ ) ; 

我收到错误消息“ mysqli_fetch_assoc()期望参数1为mysqli_result,布尔值在...中给出”

怎么了?

1 个答案:

答案 0 :(得分:0)

union至少有一个错误。联合中的所有子查询都必须具有相同的列,因此select *不适用(在这种情况下尤其如此)。

另一个错误来自PHP,因为您没有检查来自SQL的错误。如果这样做了,您会从数据库中看到错误消息。