0

I'm trying to create a query that currently spans three tables looking for various ID's but I need to know what table the ID is coming from.

$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);

This outputs 2 results which it is finding from the address table, but it's showing as coming from the 'user' table.

Any ideas?

Array
(
    [0] => Array
        (
            [nameSearchID] => 69e17996-93be-4562-ad55-49ac62801bba
        )

    [1] => Array
        (
            [nameSearchID] => 135e4e26-869d-44cc-b400-383e884923ea
        )

)
Michael Bellamy
  • 543
  • 1
  • 8
  • 16
  • Fixed it! $stmt = $db->prepare(" select 'user' as user, id from user WHERE recordStatus=1 AND CONCAT( forename, ' ', surname ) LIKE :nameSearch union all select 'salesOrder' as salesOrder, clientID from salesOrder WHERE recordStatus=1 AND salesOrderID LIKE :salesOrderID union all select 'address' as address, id from address WHERE recordStatus=1 AND postcode LIKE :searchPostcode "); – Michael Bellamy Mar 14 '17 at 15:32

1 Answers1

0

Add it as Parameter:

SELECT id as 'nameSearchID', "user" FROM user WHERE recordStatus=1 AND CONCAT( forename,  ' ', surname ) LIKE :nameSearch
UNION ALL
SELECT clientID AS 'salesOrderClientID', "salesOrder" FROM salesOrder WHERE recordStatus=1 AND salesOrderID LIKE :salesOrderID
UNION ALL
SELECT id AS 'addressID', "address" FROM address WHERE recordStatus=1 AND postcode LIKE :searchPostcode
"
Jens
  • 67,715
  • 15
  • 98
  • 113