Below is what I have in the table 'HOUSE_LOCATIONS':
| OWNER | X | Y |
|---|---|---|
| Carlos | 4 | 2 |
| Peter | 1 | 2 |
| Ben | 6 | 3 |
| Jenny | 3 | 5 |
What I have to do is set Carlos as the datum point
SET @carlosX = (SELECT x FROM HOUSE_LOCATIONS WHERE OWNER = 'Carlos');
SET @carlosY = (SELECT y FROM HOUSE_LOCATIONS WHERE OWNER = 'Carlos');
and calculate the distance between each person: abs(@carlosX - X, @carlosY - Y) and sum them.
What I need is:
| OWNER | DISTANCE |
|---|---|
| Jenny | 4 |
| Peter | 3 |
| Ben | 3 |
I tried to make a query, but I guess it's a bit complex for me.
CodePudding user response:
Use a self join:
SELECT h1.OWNER,
ABS(h2.X - h1.X) ABS(h2.Y - h1.Y) DISTANCE
FROM HOUSE_LOCATIONS h1 INNER JOIN HOUSE_LOCATIONS h2
ON h2.OWNER <> h1.OWNER
WHERE h2.OWNER = 'Carlos';
See the demo.
