es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo escribir una subconsulta en la cláusula WHERE en Azure Cosmos DB para obtener un ID que tenga diferentes ID de origen en varios documentos pero en la misma colección.

Tengo una colección que tiene múltiples documentos como se muestra a continuación. ¿Cómo escribir una consulta select para los orderid que tienen dos fuentes “OrderStatus” y “PlacedOrder” en Azure Cosmos?

Estoy intentando las siguientes consultas pero no están funcionando.

  1. seleccionar c.orderid de c donde c.source=’OrderStatus’ y c.source=’PlacedOrder’
  2. seleccionar c.orderid de c donde c.source=’OrderStatus’ y c.orderid en (seleccionar c.orderid de c donde c.source=’PlacedOrder’)

Por favor, ayúdame a escribir esta consulta de la manera correcta. ¡Gracias!

[
{
“source”: “PlacedOrder”,
“orderid”: “10490102”,
“storeid”: “50”,
“data”: {}
}
]

[
{
“source”: “OrderStatus”,
“orderid”: “10490103”,
“storeid”: “50”,
“data”: {}
}
]

[
{
“source”: “OrderStatus”,
“orderid”: “10490102”,
“storeid”: “50”,
“data”: {}
}
]

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para escribir una consulta SELECT para recuperar los orderid que tienen dos fuentes, “OrderStatus” y “PlacedOrder”, puedes utilizar la siguiente instrucción SQL:

    SELECT c.orderid 
    FROM c 
    WHERE c.source IN ('OrderStatus', 'PlacedOrder')
    GROUP BY c.orderid
    HAVING COUNT(DISTINCT c.source) = 2
    ORDER BY c.orderid
    

    Explicación:

    • La cláusula WHERE filtra los documentos para mostrar solo aquellos que tienen un campo de origen que sea “OrderStatus” o “PlacedOrder”.
    • La cláusula GROUP BY agrupa los documentos por el campo orderid.
    • La cláusula HAVING filtra los grupos que no tienen dos fuentes distintas.
    • La cláusula ORDER BY ordena los resultados por orderid.

Comments are closed.