Может быть, то, что я пытаюсь объяснить, немного запутанно, я объясняю:
У меня есть таблица с полем imei, id_factura, id_albaran, transaccion, estado (среди прочих).
imei может иметь transacion
(compra или venta) и estado
(nuevo или usado).
В моем запросе я хочу только для 'nuevo', в таблице есть сотни записей с imei, но могут быть только те же imei, estado = 'nuevo', transaccion = 'venta' с id_factura не нулевым или / и id_albaran не нулевым.
Цель этого запроса - найти out, если тот же imei, transacion = venta, estado = nuevo, имеет запись id_factura, не равную NULL, и другую запись id_albaran, не равную NULL, поэтому я хочу, чтобы он возвращал поле, если в нем есть две записи со значением 1 или если он имеет только одна запись, которая возвращает 0.
Я приведу пример того, что я хочу, чтобы запрос возвращал, в моем случае я хочу только то, что отмечено красным (продажа).
Я пробовал это (но неправильно):
SELECT imei
FROM ventacompra
WHERE transacion = 'venta' AND estado='nuevo' AND id_albaran IS NOT NULL
AND imei IN (SELECT imei FROM ventacompra v WHERE transacion = 'venta' AND estado='nuevo' AND id_factura IS NOT NULL)
____ РЕДАКТИРОВАТЬ НА ПРИМЕРЕ ____
transacion estado imei id_factura id_albaran has_factu_alba
venta nuevo 0001 01 NULL 1
venta nuevo 0001 NULL 01 1
compra nuevo 0002 01 NULL 0