none
SELECT CASE WHEN ELSE RRS feed

  • Pregunta

  • Buenas tardes,

    Tengo las siguientes 2 consultas que me van muy lentas. 
    He probado con INNER JOIN y va mucho más rápido.
    El caso es que no se hacerlo porque solamente hay que hacerlo cuando rs1("orderkind") = "fv" 
    Creo que hay una función SELECT CASE WHEN ELSE pero no se como hacerlo.

    Gracias por la ayuda !

                    ssqlrs1 = "SELECT TOP 50 * FROM tborders WHERE orderkind = 'nv' OR orderkind = 'nv' OR orderkind = 'fv' "
                    SET rs1 = Server.CreateObject("adodb.RecordSet")
                    rs1.Open ssqlrs1,ConData,0,1
                    Do While NOT rs1.EOF

     

                        If rs1("orderkind") = "fv" Then

                            ssql2 = "SELECT * FROM tborders WHERE orderinternalcode = '"&rs1("orderinternalcode")&"' "
                            SET rs2 = Server.CreateObject("adodb.RecordSet")
                            rs2.Open ssql2,ConData,0,1
                            If NOT rs2.EOF Then
                                ProveedorProductoCompra = rs2("ordercussupcode")
                            End If
                            rs2.Close
                            SET rs2 = Nothing
                         
                         End If

     

                    rs1.MoveNext
                    Loop
                    rs1.Close
                    SET rs1 = Nothing

    domingo, 2 de octubre de 2016 17:00

Respuestas

  • jorge1.6.4.4,

    Puedes simplificar el proceso mediante una sola consulta de selección haciendo uso de tablas derivadas (derived tables). 

    SELECT
        t1.*
    FROM
        tborders t1
        INNER JOIN (SELECT TOP (50) * FROM tborders WHERE orderkind = 'fv' ORDER BY ColumnName) t2
    	   ON (t1.orderinternalcode = t2.orderinternalcode)

    CONSIDERACIONES:

    1. La combinación de las filas (JOIN) podría producir valores duplicados para la columna 'ordercussupcode', puedes especificar que sólo se muestren valores únicos mediante la instrucción DISTINCT.
    2. La instrucción TOP se usa en combinación con la instrucción ORDER BY, la idea es obtener un número (o porcentaje) de filas según un criterio de orden, si omites la instrucción ORDER BY el número de filas recuperadas no tendrá ningún orden en especial.



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    domingo, 2 de octubre de 2016 18:42