У меня есть две (пример) таблицы здесь A) data_table
:
+----------+-------+
| location | value |
+----------+-------+
| 43 | 38 |
| 44 | 31 |
| 3 | 31 |
| 11 | 38 |
| 47 | 35 |
| 49 | 31 |
| 50 | 31 |
| 55 | 16 |
| 56 | 16 |
| 59 | 35 |
| 42 | 35 |
+----------+-------+
и Б) neighbour_table
:
+-----------+-----------+
| location1 | location2 |
+-----------+-----------+
| 43 | 3 |
| 43 | 11 |
| 43 | 55 |
| 3 | 50 |
| 3 | 16 |
| 49 | 56 |
| 49 | 42 |
+-----------+-----------+
Я бы хотел выбрать locations
с тем же value
, как и у одного из соседей. Каков наилучший способ сделать это (в зависимости от производительности)?
Пока я пробовал это:
1) Выберите все местоположения со значением, которое присутствует в таблице более одного раза:
SELECT location,value FROM data_table
WHERE value IN
(SELECT value FROM data_table GROUP BY value HAVING COUNT(value) > 1);
2) Теперь я хотел бы отфильтровать результат, используя neighbour_table
, но как? Используя JOIN
? Или другая производная таблица (подзапрос)?
Я думаю об использовании PHP для выполнения работы, но как насчет производительности? В любом случае, я хотел бы увидеть решение SQL, если оно есть.
Заранее спасибо