Ниже запрос не дает ожидаемый результат, пожалуйста, помогите мне - PullRequest
0 голосов
/ 30 декабря 2010

В запросе выбора должна отображаться отдельная строка для каждого получаемого значения. но при выполнении этого запроса он выдает только первое значение из подзапроса, используемого в предложении IN.

    SELECT prod_id FROM tbl_product WHERE tbl_product.prod_status = 1 AND 
tbl_product.is_excluded = 0 AND tbl_product.prod_stock_qty > 0 
AND tbl_product.prod_id IN (SELECT rel_prod_ids 
FROM tbl_product_relations WHERE prod_id = '6058')

Подзапрос возвращает значения, разделенные запятыми

Может ли кто-нибудь помочь мне найти решение этой проблемы?

Ответы [ 2 ]

1 голос
/ 30 декабря 2010

Что вам нужно это find_in_set

select find_in_set(123, '123,12345,123456');  <-- return 1
select find_in_set(123, '1234,12345,123456'); <-- return 0

Эта функция довольно медленная и остерегается производительности ...

1 голос
/ 30 декабря 2010

Используйте JOIN вместо IN

SELECT p.prod_id
FROM tbl_product p JOIN tbl_product_relations pr ON p.prod_id = pr.rel_prod_ids
WHERE p.prod_status = 1
    AND p.is_excluded = 0
    AND p.prod_stock_qty > 0
    AND r.prod_id = '6058'
...