1

次のクエリに問題があります

select
ord.order_id, 
ordProduct.product_id,
coupProd.product_id,
coup.date_end as DateEnd, coup.coupon_id
from `order` ord
inner join order_product ordProduct on ord.order_id = ordProduct.order_id
inner join coupon_product coupProd on ordProduct.product_id = coupProd.product_id
inner join coupon coup on coupProd.coupon_id = coup.coupon_id
where (coup.date_end > curdate());

where句を削除すると、クエリは正常に実行されますが、そうでない場合はハングします。何か案は?

4

1 に答える 1

0

それ自体は解決策ではありませんが、回避策として、ネストされたクエリとして実行できる可能性があります。すなわち、

SELECT * FROM (
    SELECT
    ord.order_id, 
    ordProduct.product_id,
    coupProd.product_id,
    coup.date_end AS DateEnd, coup.coupon_id
    FROM `order` ord
    INNER JOIN order_product ordProduct ON ord.order_id = ordProduct.order_id
    INNER JOIN coupon_product coupProd ON ordProduct.product_id = coupProd.product_id
    INNER JOIN coupon coup ON coupProd.coupon_id = coup.coupon_id)
WHERE (DateEnd > CURDATE());
于 2013-03-04T18:18:39.000 に答える