Как написать этот запрос самостоятельного присоединения в MySQL - PullRequest
1 голос
/ 05 января 2012

Здравствуйте, у меня есть такая структура таблицы

products_id | model_num | master_model_num
   1        |  cth001   |    0 
   2        |  cth002   |    0
   3        |  cth003   |    cth001
   4        |  cth004   |    cth001
   5        |  cth005   |    0
   6        |  cth006   |    cth002

Моя проблема

Я предоставлю products_id для таблицы, и он получит все идентификаторы продукта, у которых master_model_num равно model_num данного products_id

Я пробовал следующий запрос, но он не выдает желаемый результат

SELECT p.products_id 
FROM products p,products pp 
WHERE p.products_id=pp.products_id 
AND p.products_model=pp.products_master_model 
AND p.products_id='1' 

Ответы [ 4 ]

6 голосов
/ 05 января 2012
SELECT pp.products_id
    FROM products p
        INNER JOIN products pp
            ON p.model_num = pp.master_model_num
    WHERE p.products_id = '1'
1 голос
/ 05 января 2012

Попробуйте это

SELECT 
  p.products_id 
 FROM 
   products p 
 INNER JOIN 
   products pp 
 ON 
   pp.products_master_model = p.products_model
1 голос
/ 05 января 2012

Не был бы

SELECT products_id
FROM products
WHERE master_model_num = (SELECT model_num 
                          FROM products 
                          WHERE products_id = 1)

имеет больше смысла в этом случае? Имея AND p.products_id='1' в конце вашего запроса, вы гарантируете, что получите только одну запись назад.

0 голосов
/ 05 января 2012
SELECT p.products_id FROM products p,products pp where p.model_num=pp.master_model_num and p.products_id='1' 
...