Я пытаюсь получить информацию для отображения из 3 разных таблиц с одинаковой структурой столбцов. Я знаю, как использовать Union All в sql, но когда я это записываю, я получаю 0 результатов. Никаких ошибок или вообще ничего не заполняется.
$sql = 'SELECT
Invoice_
FROM
(
SELECT
RQ.Invoice_
FROM disc_rq_activations RQ
LEFT JOIN disc_Activations VZ
ON LEFT(RQ.Related_SN,length(RQ.Related_SN)-1) = VZ.Device_ID
WHERE VZ.Device_ID IS NULL
AND VZ.Purchased_Receivable IS NULL
AND RQ.District = "'.$region.'"
UNION ALL
SELECT
U.Invoice_
FROM disc_rq_upgrades U
LEFT JOIN disc_Upgrades VZ
ON LEFT(U.Related_SN,length(U.Related_SN)-1) = VZ.Device_ID
WHERE VZ.Device_ID IS NULL
AND U.District = "'.$region.'"
UNION ALL
SELECT
O.Invoice_
FROM disc_rq_optional_services O
LEFT JOIN disc_optional_services VZ
ON LEFT(O.Related_SN,length(O.Related_SN)-1) = VZ.Device_ID
WHERE VZ.Device_ID IS NULL
AND O.District = "'.$region.'"
) ';
$stmt = $conn->prepare($admin);
#}
$stmt->bindColumn(1, $Invoice_);
$stmt->bindColumn(2, $amount);
$stmt->execute();
$numRows = $stmt->rowCount();
if (isset($numRows)) {
Таблицы:
Activations
+----------+--------+
| Invoice_ | Amount |
+----------+--------+
| 86754 | $10.00 |
| 63729 | $20.00 |
| 92647 | $30.00 |
| | |
+----------+--------+
Upgrades
+----------+---------+
| Invoice_ | Amount |
+----------+---------+
| 86754 | $48.00 |
| 7373 | $67.00 |
| 76970 | $300.00 |
| | |
+----------+---------+
Opt Services
+----------+--------+
| Invoice_ | Amount |
+----------+--------+
| 3245 | $66.00 |
| 4567 | $15.00 |
| 345 | $32.00 |
+----------+--------+
Цель состоит в том, чтобы отобразить все на одной странице. В настоящее время они все разделены на разные страницы, которые делают для дополнительной работы.
В моем текущем запросе я выбрал только 1 столбец для целей тестирования.
Где я ошибаюсь в этом запросе?
Желаемый результат:
+----------+---------+--------------+
| Invoice_ | Amount | Table |
+----------+---------+--------------+
| 86754 | $10.00 | Activations |
| 63729 | $20.00 | Activations |
| 92647 | $30.00 | Activations |
| 86754 | $48.00 | upgrades |
| 7373 | $67.00 | upgrades |
| 76970 | $300.00 | upgrades |
| 3245 | $66.00 | Opt Services |
| 4567 | $15.00 | Opt Services |
| 345 | $32.00 | Opt Services |
+----------+---------+--------------+
Использование предоставленного ответа по-прежнему не дает данных.
$sql = 'SELECT Invoice_, "Activations" as table from `Activations`
UNION ALL
SELECT Invoice_, "Upgrades" as table from `Upgrades`
UNION ALL
SELECT Invoice_, "Opt Services" as table from `Opt Services`
';
Полный рабочий код:
SELECT
Invoice_,
Tracking_,
Qty,
Product_SKU,
Product_Name,
Unit_Rebate,
Related_Product,
Related_SKU,
Related_SN,
Related_Cost,
Related_Price,
Rate_Plan,
Customer,
Sales_Person,
Sales_Person_ID,
Sold_On,
Invoiced_At,
Original_Invoice,
Original_Sales_Date,
Contract_,
SOC_Code,
SOC_Code_2,
Extra_Field,
Port_Number,
Region,
District,
Vendor_Account_Name,
'activations' as a
from
`disc_rq_activations`
LEFT JOIN
disc_Activations VZ
ON LEFT(Related_SN, length(Related_SN) - 1) = VZ.Device_ID
WHERE
VZ.Device_ID IS NULL
AND VZ.Purchased_Receivable IS NULL
AND District = '".$region."'
UNION ALL
SELECT
Invoice_,
Tracking_,
Qty,
Product_SKU,
Product_Name,
Unit_Rebate,
Related_Product,
Related_SKU,
Related_SN,
Related_Cost,
Related_Price,
Rate_Plan,
Customer,
Sales_Person,
Sales_Person_ID,
Sold_On,
Invoiced_At,
Original_Invoice,
Original_Sales_Date,
Contract_,
SOC_Code,
SOC_Code_2,
Extra_Field,
Port_Number,
Region,
District,
Vendor_Account_Name,
'upgrades' as b
from
`disc_rq_upgrades`
LEFT JOIN
disc_Upgrades VZ
ON LEFT(Related_SN, length(Related_SN) - 1) = VZ.Device_ID
WHERE
VZ.Device_ID IS NULL
AND District = '".$region."'
UNION ALL
SELECT
Invoice_,
Tracking_,
Qty,
Product_SKU,
Product_Name,
Unit_Rebate,
Related_Product,
Related_SKU,
Related_SN,
Related_Cost,
Related_Price,
Rate_Plan,
Customer,
Sales_Person,
Sales_Person_ID,
Sold_On,
Invoiced_At,
Original_Invoice,
Original_Sales_Date,
Contract_,
SOC_Code,
SOC_Code_2,
Extra_Field,
Port_Number,
Region,
District,
Vendor_Account_Name,
'optionalServices' as c
from
`disc_rq_optional_services`
LEFT JOIN
disc_optional_services VZ
ON LEFT(Related_SN, length(Related_SN) - 1) = VZ.Device_ID
WHERE
VZ.Device_ID IS NULL
AND District = '".$region."'