Menu

DELETE avec conditions sur plusieurs tables

mikesunshine59 73 Messages postés lundi 22 janvier 2018Date d'inscription 24 février 2018 Dernière intervention - 23 févr. 2018 à 10:11 - Dernière réponse : yg_be 5767 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 15 juin 2018 Dernière intervention
- 24 févr. 2018 à 15:59
Bonjour,

J'essaye de faire un delete avec des conditions sur d'autres tables, mais je n'y arrive pas.

Pouvez-vous m'aider svp ?


DELETE (SELECT * FROM `orders_history` ORDER BY `Timestamp` DESC LIMIT 0,1)
WHERE (SELECT OrderType FROM getopenorders WHERE Exchange <> 'ORANGE') = ''
AND (SELECT OrderType FROM getorderhistory ORDER BY OrderType DESC LIMIT 0,1) = 'LIMIT_SELL'
Afficher la suite 

Votre réponse

3 réponses

yg_be 5767 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 15 juin 2018 Dernière intervention - 23 févr. 2018 à 12:48
0
Merci
bonjour, ce serait plutôt:
DELETE orders_history FROM orders_history, ...

montre-nous d'abord la requête qui te fournit les clés uniques des enregistrements que tu veux supprimer.
mikesunshine59 73 Messages postés lundi 22 janvier 2018Date d'inscription 24 février 2018 Dernière intervention - 24 févr. 2018 à 15:41
Bonjour,

Voici le select qui fonctionne. Mais je n'arrive pas à faire un DELETE sur cette ligne.

Vous pouvez m'aidez svp ?


SELECT * FROM orders_history as t1
WHERE exists (select 0 FROM getopenorders WHERE getopenorders.Exchange <> 'ORANGE' and getopenorders.exchange is not null)
AND exists (SELECT 1 FROM getorderhistory WHERE getorderhistory.OrderType = 'LIMIT_SELL' ORDER BY getorderhistory.TimeStamp DESC LIMIT 0,1)
AND t1.Type = 'buylimit'
order by t1.Timestamp DESC LIMIT 0,1
yg_be 5767 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 15 juin 2018 Dernière intervention > mikesunshine59 73 Messages postés lundi 22 janvier 2018Date d'inscription 24 février 2018 Dernière intervention - 24 févr. 2018 à 15:59
tu ne nous as pas donné la requête qui te fournit les clés uniques des enregistrements que tu veux supprimer. par ailleurs, ta requête me semble très suspecte, vu l’absence de jointure.
malgré tout, suggestion:
DELETE tdel
FROM orders_history as tdel, 
(SELECT cleunique FROM orders_history as t1
WHERE exists (select 0 FROM getopenorders WHERE getopenorders.Exchange <> 'ORANGE' and getopenorders.exchange is not null) 
AND exists (SELECT 1 FROM getorderhistory WHERE getorderhistory.OrderType = 'LIMIT_SELL' ORDER BY getorderhistory.TimeStamp DESC LIMIT 0,1)
AND t1.Type = 'buylimit'
order by t1.Timestamp DESC LIMIT 0,1) as tsrc
WHERE tdel.cleunique = tsrc.cleunique
Commenter la réponse de yg_be