#mysql #join
#mysql #Присоединиться
Вопрос:
У меня есть запрос mysql, подобный…
SELECT OrderTransaction.buyer, OrderTransaction.parent_id
FROM order_transactions as OrderTransaction
INNER JOIN (
SELECT buyer
FROM order_transactions as dy
left join orders as ebay on ebay.id=dy.parent_id
where ebay.status='0' and dy.parent_id IN (
SELECT parent_id
FROM order_shipping_details as ds
left join orders as ebays on ebays.id=ds.parent_id
where ebays.status='0' and ebays.combined=0
GROUP BY ds.Street
HAVING count(ds.id) > 1
) and ebay.combined=0
group by dy.buyer
) dup ON dup.buyer=OrderTransaction.buyer
left join orders as ebay on ebay.id=OrderTransaction.parent_id
where ebay.market_type!='shopclue' and ebay.status='0' and ebay.combined=0
Мне нужно оптимизировать этот запрос и я хочу удалить внутренний select с помощью joins.
Любая помощь будет оценена. Заранее спасибо.
Комментарии:
1. напишите описание таблиц и расскажите нам, что вы хотите сделать?
2. Если хотите, рассмотрите возможность выполнения этого простого двухэтапного действия: 1. Если вы еще этого не сделали, предоставьте надлежащие DDL (и / или sqlfiddle), чтобы мы могли легче воспроизвести проблему. 2. Если вы еще этого не сделали, предоставьте желаемый набор результатов, соответствующий информации, предоставленной на шаге 1.
Ответ №1:
Попробуйте этот приведенный ниже код, возможно, он работает быстрее, чем тот, который вы используете в настоящее время:
DROP TEMPORARY TABLE IF EXISTS temp1;
CREATE TEMPORARY TABLE temp1;
SELECT buyer
FROM order_transactions AS dy
LEFT JOIN orders AS ebay ON ebay.id=dy.parent_id
WHERE ebay.status='0'
AND dy.parent_id
IN (
SELECT parent_id
FROM order_shipping_details AS ds
left join orders AS ebays ON ebays.id=ds.parent_id
where ebays.status='0' and ebays.combined=0
GROUP BY ds.Street
HAVING count(ds.id) > 1)
AND ebay.combined= '0'
;
SELECT
OrderTransaction.buyer,
OrderTransaction.parent_id
FROM order_transactions AS OrderTransaction
INNER JOIN temp1 AS tmp ON tmp.buyer = OrderTransaction.buyer
LEFT JOIN orders AS ebay ON ebay.id = OrderTransaction.parent_id
WHERE ebay.market_type! = 'shopclub' AND ebay.status = '0' and ebay.combined = '0'
Please let me know if you have any questions!
Комментарии:
1. Спасибо за ваше решение. Я внес некоторые другие изменения в свои запросы и решил свою проблему.
2. Я очень рад, что это помогло! : D
3. Не могли бы вы пометить его как принятый ответ? Я был бы признателен, поскольку я только начал использовать этот сайт, чтобы помогать другим людям. Это побудит меня решать больше проблем. : D