Así que esto es lo que quiero hacer en mi base de datos MySQL .
Me gustaría:
SELECT * FROM itemsOrdenetworking WHERE purchaseOrder_ID = '@purchaseOrdenetworking_ID' AND status = 'PENDING'
Si eso no devuelve ninguna fila, lo que es posible a través de if(dr.HasRows == false)
, ahora crearía una UPDATE
en la database purchaseOrder
:
UPDATE purchaseOrder SET purchaseOrder_status = 'COMPLETED' WHERE purchaseOrder_ID = '@purchaseOrder_ID'
¿Cómo podría hacer este process un poco más corto?
Para su consulta específica, puede hacer:
UPDATE purchaseOrder SET purchaseOrder_status = 'COMPLETED' WHERE purchaseOrder_ID = '@purchaseOrder_ID' and not exists (SELECT * FROM itemsOrdenetworking WHERE purchaseOrder_ID = '@purchaseOrdenetworking_ID' AND status = 'PENDING' )
Sin embargo, podría adivinar que estás en un bucle en un nivel superior. Para establecer todos esos valores, intente esto:
UPDATE purchaseOrder SET purchaseOrder_status = 'COMPLETED' WHERE not exists (SELECT 1 FROM itemsOrdenetworking WHERE itemsOrdenetworking.purchaseOrder_ID = purchaseOrder.purchaseOrdenetworking_ID AND status = 'PENDING' limit 1 )
Puede usar la syntax UPDATE
varias tablas para efectuar un ANTI-JOIN
entre purchaseOrder
y itemsOrdenetworking
:
UPDATE purchaseOrder p LEFT JOIN itemsOrdenetworking i ON p.purchaseOrder_ID = i.purchaseOrder_ID AND i.status = 'PENDING' SET p.purchaseOrder_status = 'COMPLETED' WHERE p.purchaseOrder_ID = '@purchaseOrder_ID' AND i.purchaseOrder_ID IS NULL
Como MySQL no admite if exists(*Your condition*) (*Write your query*)
, puede lograr una 'cláusula if' escribiendo de esta manera:
(*Write your insert or update query*) where not exists (*Your condition*)
También puede usar la siguiente consulta para verificar si el logging existe y luego actualizarlo:
if not exists(select top 1 fromFROM itemsOrdenetworking WHERE purchaseOrder_ID = '@purchaseOrdenetworking_ID' AND status = 'PENDING' ) Begin UPDATE purchaseOrder SET purchaseOrder_status = 'COMPLETED' WHERE purchaseOrder_ID = '@purchaseOrder_ID End
Select FROM t1 WHERE s11 > ANY (SELECT col1,col2 FROM t2 WHERE NOT EXISTS (SELECT * FROM t3 WHERE ROW(5*t2.s1,77)= (SELECT 50,11*s1 FROM t4 UNION SELECT 50,77 FROM (SELECT * FROM t5) AS t5)));
if not exists(select top 1 fromFROM itemsOrdenetworking WHERE purchaseOrder_ID = '@purchaseOrdenetworking_ID' AND status = 'PENDING' ) Begin UPDATE purchaseOrder SET purchaseOrder_status = 'COMPLETED' WHERE purchaseOrder_ID = '@purchaseOrder_ID End
puede ayudarle cuando usa Merge en sql para insert, actualizar y eliminar en base a la statement de coincidencia en el server SQL, por ejemplo, le ayuda https://technet.microsoft.com/en-us/library/bb522522(v=sql. 105) .aspx