2015-04-16 2 views
2

Я следующие базы данных:Как использовать результат разделения в том, где внутри запроса MySQL?

id name prime product 
1 x 2  2 
2 z 3  6 
3 y 17 102 
4 d 5  30 
5 a 7  210 
6 b 11 330 
7 c 13 390 

Prime и продукт используется для определения предка. Теперь мне нужно найти все предок C, которые будут работать так:

c.product/c.prime -> 390/13 = 30 --> ancestor D's product 
d.product/d.prime -> 30/5 = 6 --> ancestor Z's product 
z.product/z.prime -> 6/3 = 2 --> ancestor X's product 
no more ancestors 

Теперь мой вопрос заключается в том, чтобы получить результат C и все эти предок в течение одного простого MySQL запроса. Это желаемый результат:

id name prime product 
1 x 2  2 
2 z 3  6 
4 d 5  30 
7 c 13 390 

Любой может дать мне подсказку?

Моя текущая попытка:

SELECT *, (product DIV prime) AS ancestor FROM temp.test_tree WHERE product = ancestor; 

Но это, очевидно, doens't работа.

ответ

1
SELECT * FROM test_tree WHERE product IN (SELECT (product DIV prime) FROM test_tree)); 
+0

Спасибо, это почти идеально, но я не получаю C сам? – Cojones

+0

Я хотел, чтобы это было немного общего. поскольку имя «a» (210/7), «b» (330/11) также равно 30. Поэтому игнорируется «c». –

+0

Итак, есть ли a, b, c или none? Но не только? – Cojones

Смежные вопросы