Foros del Web » Programando para Internet » ASP Clásico »

Order By

Estas en el tema de Order By en el foro de ASP Clásico en Foros del Web. Hola, tengo un problema a la hora de ordenar los campos. Lo voy a explicar lo mejor que pueda. Tengo dos tablas, la llamaremos tabla1 ...
  #1 (permalink)  
Antiguo 10/02/2004, 05:56
 
Fecha de Ingreso: julio-2003
Mensajes: 116
Antigüedad: 20 años, 11 meses
Puntos: 0
Order By

Hola, tengo un problema a la hora de ordenar los campos. Lo voy a explicar lo mejor que pueda.
Tengo dos tablas, la llamaremos tabla1 y tabla2 . En la tabla1 hay un campo A y otro B y en la tabla2 tenemos el campo C .
Lo que quiero hacer es hacer una consulta SQL ordenada por el campo C de la tabla2 y después por el campo A y B de la tabla1.
¿Cómo podría hacer eso?
Gracias.
  #2 (permalink)  
Antiguo 10/02/2004, 09:07
Avatar de PMP
PMP
 
Fecha de Ingreso: febrero-2003
Ubicación: Chacabuco - Buenos Aires
Mensajes: 214
Antigüedad: 21 años, 3 meses
Puntos: 1
Si no tenés campos relacionados:
SELECT Tabla2.C, Tabla1.A, Tabla1.B
FROM Tabla1, Tabla2
ORDER BY Tabla2.C, Tabla1.A, Tabla1.B

Si tenes por ejemplo el campo ID relacionado:
SELECT Tabla2.C, Tabla1.A, Tabla1.B
FROM Tabla2 INNER JOIN Tabla1 ON Tabla2.ID = Tabla1.ID
ORDER BY Tabla2.C, Tabla1.A, Tabla1.B

Deberías detallar un poco mas que es lo que quieres hacer para obtener una respuesta adecuada a tu problema.

Saludos.
  #3 (permalink)  
Antiguo 10/02/2004, 09:19
 
Fecha de Ingreso: enero-2004
Ubicación: Antofagasta
Mensajes: 40
Antigüedad: 20 años, 4 meses
Puntos: 0
podrías ordenarlo de la siguiente manera:

select * from tabla1 t1, tabla2 t2
order by t2.C, t1.A,t1.B

esto juntara las dos tablas y las ordenará primero por C, luego A y después por B, en todo caso puedes realizar un join o algo por el estilo si tienes campo identificadores en ambas tablas para que no se te repitan valores, es decir usa:

select * from tabla1 t1, tabla2 t2
where t1.A=t2.C and .... etc ...
order by t2.C, t1.A,t1.B

en todo caso esto está probado para MS SqlServer y Oracle, no le he probado en Access, pero supongo que funciona, en general, las consultas sql son bastantes universales.

Bien,espero haberte respondido, si no, trata de especificar mas sobre que estás trabajando, para ver si puedo ayudarte.
  #4 (permalink)  
Antiguo 10/02/2004, 10:37
 
Fecha de Ingreso: julio-2003
Mensajes: 116
Antigüedad: 20 años, 11 meses
Puntos: 0
Creo que se por donde van los tiros, pero voy a poner los campos reales a ver si no me pierdo.

A ver, tengo dos tablas, una que es [pedidos-principal y otra pedidos-productos. De la tabla [pedidos-principal solo me interesa coger el campo Cliente y de la otra tabla todos los campos. Y que luego se muestre ordenado por Cliente y luego por [pedido-número] y luego por [código producto]
La consulta sería algo así?

SELECT [pedidos-principal].Cliente, * from [pedidos-productos] ORDER BY Cliente,[pedido número],[código producto]

El único campo que está relacionado es el [pedido número]

Gracias.
  #5 (permalink)  
Antiguo 10/02/2004, 12:49
Avatar de PMP
PMP
 
Fecha de Ingreso: febrero-2003
Ubicación: Chacabuco - Buenos Aires
Mensajes: 214
Antigüedad: 21 años, 3 meses
Puntos: 1
Prueba con esto:

SELECT [pedidos-principal].cliente, [pedidos-productos].[pedido-número], [pedidos-productos].[código producto], [pedidos-productos].cantidad, [pedidos-productos].precio
FROM [pedidos-principal] INNER JOIN [pedidos-productos] ON [pedidos-principal].[pedido número] = [pedidos-productos].[pedido-número]
ORDER BY [pedidos-principal].cliente, [pedidos-productos].[pedido-número], [pedidos-productos].[código producto];
  #6 (permalink)  
Antiguo 11/02/2004, 11:31
 
Fecha de Ingreso: julio-2003
Mensajes: 116
Antigüedad: 20 años, 11 meses
Puntos: 0
Gracias, lo probaré a ver si me funciona y ya os cuento.
  #7 (permalink)  
Antiguo 11/02/2004, 11:55
 
Fecha de Ingreso: julio-2003
Mensajes: 116
Antigüedad: 20 años, 11 meses
Puntos: 0
PMP lo he probado de tu manera y me dice lo mismo que de la manera que lo he hecho (quitándole el FROM [pedidos-principal] que creo que sobra) y me da el mismo error:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Controlador ODBC Microsoft Access] Error de sintaxis (falta operador) en la expresión de consulta '[pedidos-productos].cantidad ORDER BY [pedidos-principal].cliente'.
/v5pd.asp, línea 108


La linea 108 es la que ejecuta la sentencia SQL.¿Qué hago mal?
  #8 (permalink)  
Antiguo 02/03/2004, 11:33
 
Fecha de Ingreso: julio-2003
Mensajes: 116
Antigüedad: 20 años, 11 meses
Puntos: 0
Por favor, me urge muchísimo, ya nadie me responde y necesito vuestra ayuda. Voy a poner el código entero a ver si sale la consulta:
Código PHP:
  <%
f="<font size=1 face=Verdana,Helvetica,Arial><strong>"
f1="</strong></font>"
c="<font size=2 face=Arial color=#cc0000><strong>"
c1="</strong></font>"
e="<font size=2 face=Arial color=#000099><strong>"
e1="</strong></font>"
b="<font size=2 face=Arial color=990000><strong>"
b1="</strong></font>"
a="<strong><font size=2 face=Arial>"
a1="</strong></font>"

Dim mostrar
Dim cant_paginas
Dim pagina_actual
Dim registro_mostrado
Dim I

mostrar 
20

If Request.QueryString("page") = "" Then
pagina_actual 
1
Else
pagina_actual CInt(Request.QueryString("page"))
End If

'Aqui es donde no sé que poner, las strsql
'
strsql "SELECT * from [pedidos-productos] ORDER BY [pedido número],[código producto] ASC"
strsql "SELECT [pedidos-principal].cliente,[pedidos-productos].[pedido número],[pedidos-productos].[código producto] ORDER BY [pedidos-principal].cliente,[pedidos-productos].[pedido número],[pedidos-productos].[código producto]"

Set oConn Server.CreateObject("ADODB.Connection")
Set conn Server.CreateObject("ADODB.Connection")

oConn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" Server.MapPath("\databases\db1.mdb")

Set RS Server.CreateObject("ADODB.Recordset")
Set RS3 Server.CreateObject("ADODB.Recordset")
Set RS5 Server.CreateObject("ADODB.Recordset")

RS.PageSize mostrar
RS
.CacheSize mostrar

RS
.Open strSQLoConn,3,1

cant_paginas 
RS.PageCount


If pagina_actual cant_paginas Then pagina_actual cant_paginas
If pagina_actual 1 Then pagina_actual 1


If cant_paginas 0 Then
Response
.Write a&"No hay registros..."&a1
Else

RS.AbsolutePage pagina_actual

%>
  <
font face="Verdana, Arial, Helvetica, sans-serif" size="+1">Página <b><%= pagina_actual %></bde <b><%= cant_paginas %></b></font><br><br>
  <%

SQLp="Select * from productos"
set rs4=oConn.execute(SQLp)

SQL3="Select * from [pedidos-principal]" 
set rs3=oConn.execute(SQL3)


registro_mostrado 0
dim 
var()
i=1

Do While registro_mostrado mostrar And Not RS.EOF
if i=1 then
 redim 
var(i)
else
 
redim preserve var(i)
end if

response.write "<table width=""100%"" border=1 colspan=5>"
if rs.fields("pedido número")<>var(i-1) and var(i)<>1 then
response
.write "<hr>"
response.write b&"Pedido número: "&b1&e&rs.fields("pedido número")&e1

pedido
=CStr(rs.fields("pedido número"))
rs3.movefirst
    
do until rs3.eof
        pedido2
=CStr(rs3.fields("pedido número"))
            if 
pedido=pedido2 then
                cliente
=rs3.fields("Cliente")                
                exit do
            
end if
        
rs3.movenext
    loop
    
response
.write "<tr><td><a href=printout.asp?nume="&rs.fields("pedido número")&">"&a&"Imprimir pedido</a></td></tr>"
response.write "<tr><td colspan=6 align=left>"&a&"Cliente: "&a1&e&cliente&e1&"</td></tr>"
response.write "<tr><td align=center>"&a&"CÓDIGO PRODUCTO</td><td align=center>"&a&"CANTIDAD</td><td align=center>"&a&"DENOMINACIÓN</td></tr>"
response.write "<hr>"
end if
codigo=rs.fields("código producto")
rs4.movefirst
    
do until rs4.eof
        codigo2
=rs4.fields("código")
            if 
codigo=codigo2 then
                denom
=rs4.fields("denominación")
                
            
end if
        
rs4.movenext
    loop
response
.write "<tr><td align=center width=""10%"">"&e&rs.fields("código producto")&e1&"</td><td align=center width=""10%"">"&e&rs.fields("cantidad")&e1&"</td><td align=center width=""40%"">"&e&denom&e1&"</td></tr>"


var(i)=rs.fields("pedido número")
i=i+1

rs
.movenext

'----------------------------------------------------------------------------------------------------------
registro_mostrado=registro_mostrado+1
loop 
response.write "</table>"






End If


RS.Close
Set RS = Nothing
oConn.Close
Set oConn = Nothing

Ahora mostramos los enlaces a las otras páginas con el resto de los registros...
If 
pagina_actual 1 Then
%>
  <
a href="./v5pd.asp?page=<%= pagina_actual - 1 %>"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><strong>[<< Anterior]</strong></font></a>
<%
End If

' mostramos la paginacion por numeros de página
For I = 1 To cant_paginas
If I = pagina_actual Then
%>
  <%response.write "<font face=verdana size=1>Página "&I&"</font>" %>
  <%
Else
%>
  <a href="./v5pd.asp?page=<%= I %>"><%= I %></a>
  <%
End If
Next '
I

If pagina_actual cant_paginas Then
%>
  <
a href="./v5pd.asp?page=<%= pagina_actual + 1 %>"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><strong>[Próximo >>]</strong></font></a>
  <%
End If
Fin...
%> 
A ver si podeis solucionarme que la consulta SQL se ordene primero por clientes, luego por pedido número y finalmente por código producto. O sea, el resultado que quiero es algo así:

Pedido número:12990903
Cliente: Antonio
----------------------------------------------
Caramelos: código 1000 : cantidad 1
Cerezas: código 1001: cantidad 29
etc
.
.
.

Gracias

Última edición por knarfy; 03/03/2004 a las 03:04
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:54.