0
現在、さまざまなIDを探している3つのテーブルにまたがるクエリを作成しようとしていますが、IDがどのテーブルから来ているのかを知る必要があります。MySQL PDO UNIONクエリで、結果のテーブルが見つかりました
$searchQuery = 'LS7 2UP';
$stmt = $db->prepare("
SELECT id as 'nameSearchID' FROM user WHERE recordStatus=1 AND CONCAT(forename, ' ', surname) LIKE :nameSearch
UNION ALL
SELECT clientID AS 'salesOrderClientID' FROM salesOrder WHERE recordStatus=1 AND salesOrderID LIKE :salesOrderID
UNION ALL
SELECT id AS 'addressID' FROM address WHERE recordStatus=1 AND postcode LIKE :searchPostcode
");
$stmt->bindValue(':nameSearch', "%$searchQuery%", PDO::PARAM_STR);
$stmt->bindValue(':salesOrderID', "%$searchQuery%", PDO::PARAM_STR);
$stmt->bindValue(':searchPostcode', "%$searchQuery%", PDO::PARAM_STR);
$stmt->execute();
$rowCount = $stmt->rowCount();
$resultsOrig = $stmt->fetchAll(PDO::FETCH_ASSOC);
これは、アドレステーブルから知見であるが、それは「ユーザ」テーブルから来たように見せて2つの結果を出力します。
アイデア?
Array
(
[0] => Array
(
[nameSearchID] => 69e17996-93be-4562-ad55-49ac62801bba
)
[1] => Array
(
[nameSearchID] => 135e4e26-869d-44cc-b400-383e884923ea
)
)
はそれを修正! ':すべての が選択nameSearch 組合、姓)LIKE 'salesOrder' salesOrderなどで、RecordStatus = 1、CONCAT(forename、' $ stmtは= $ DB->「(準備ユーザーとして 'ユーザー' を選択 、ユーザーからのID 、clientID from salesOrder WHERE recordStatus = 1 AND salesOrderID LIKE:salesOrderID 共用体 アドレスとして 'address'を選択し、WHERE recordStatus = 1 AND postcode LIKE:searchPostcode "というアドレスからIDを選択します。 –