SQL UNION 2 SELECT для одной таблицы - PullRequest
0 голосов
/ 25 ноября 2018

У меня есть 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)) { ..... }

2 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 голосов
/ 25 ноября 2018

По крайней мере одна ошибка исходит от union.Все подзапросы в объединении должны иметь одинаковые столбцы, поэтому select * не подходит (особенно в этом случае).

Другая ошибка возникает в PHP, поскольку вы не проверяете ошибки в SQL.В противном случае вы увидите сообщение об ошибке из базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...