MySQLの - そこに等しい値が1つのフィールド内で、今度は他の分野での非ヌル値を持っているところすべてのレコードを取得します。

Sylar:

たぶん私が説明しようとしていることはビットが畳み込まれている、私が説明します。

私は(特に)IMEIフィールド、id_factura、id_albaran、transaccion、エスタードを持つテーブルがあります。

IMEIを有することができるtransacion(compraまたはVENTA)を、そしてestado(ヌエボ又はusado)。

私のクエリでは、私は唯一、「ヌエボ」もののためにそれをしたいテーブル内のレコードの数百人がIMEIであるだけ同じIMEIがあることができ、エスタード=「ヌエボ」、id_facturaとtransaccion =「ベンタ」はNULLまたは/およびNOT NULLをid_albaran。

私はそれがAを持つ2つのレコードを持っている場合、それはフィールドを返すようにしたいので、このクエリの目的は、同じIMEI、transacion =ベンタ、エスタード=ヌエボは、id_facturaレコードではないヌルと別のid_albaran記録NOT NULLを持っているかどうかを確認することです1の値か、それは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)

____EDIT FOR EXAMPLE____

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
離れて渡します:

EXISTS

SELECT v.* FROM ventacompra v
WHERE v.transacion = 'venta' AND v.estado='nuevo' AND (v.id_factura IS NULL XOR v.id_albaran IS NULL)
AND EXISTS (
  SELECT 1 FROM ventacompra
  WHERE  imei = v.imei AND transacion = v.transacion AND estado = v.estado
    AND (id_factura IS NULL) = (v.id_factura IS NOT NULL)
    AND (id_albaran IS NULL) = (v.id_albaran IS NOT NULL)
)

列のいずれかがid_facturaid_albaran常にありnull、その他not null、あなたは条件を省略することがあります。

AND (v.id_factura IS NULL XOR v.id_albaran IS NULL)

参照のデモを
結果:

| id_ventacompra | transacion | estado | imei            | id_factura | id_albaran |
| -------------- | ---------- | ------ | --------------- | ---------- | ---------- |
| 492            | venta      | nuevo  | 352984109069491 |            | 23         |
| 493            | venta      | nuevo  | 352984109069491 | 10         |            |

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=402850&siteId=1