Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-01-2008
Avatar de salvica
salvica salvica is offline
Miembro
 
Registrado: mar 2004
Ubicación: Albacete (España) ... En un lugar de la Mancha ...
Posts: 304
Poder: 21
salvica Va por buen camino
Ordenar por una columna resultado de otro select

Hola
¿Podeis decirme si se puede ordenar una consulta que tiene una columna que es resultado de otra consulta?

Deseo aplicarlo a la pulsación de una columna en un TListView
Código Delphi [-]
  with ListView_DATOS do begin
       Clear;
       Columns.Clear;
       AddColumnsToListView(ListView_DATOS, 'TIPO',                50 );
       AddColumnsToListView(ListView_DATOS, 'DIRECCIÓN',          200 );
       AddColumnsToListView(ListView_DATOS, 'PLANTA',              60 );
       AddColumnsToListView(ListView_DATOS, 'LETRA',               50 );
       AddColumnsToListView(ListView_DATOS, 'PROPIETARIO',        200 );
       AddColumnsToListView(ListView_DATOS, 'ALQUILADO',           80 );
       AddColumnsToListView(ListView_DATOS, 'ID_CLAVE',           100 );
       AddColumnsToListView(ListView_DATOS, 'ID_PROPIETARIO',     100 );
       AddColumnsToListView(ListView_DATOS, 'ID_INQUILINO',       100 );
  end; { del with ListView_DATOS do }
  with ZQuery_CLIE do begin
       SQL.Clear;
       SQL.Add( 'SELECT propieda.TIPO, propieda.DIRECCION, propieda.NUMERO, propieda.PLANTA, propieda.LETRA,' );
       SQL.Add( '       propieta.NOMBRE, propieta.APELLIDO_1, propieta.APELLIDO_2,' );
     { -------> esta es la columna por la que deseo ordenar }
       SQL.Add( '      (SELECT contrato.ID_PROPIED FROM contrato WHERE contrato.ID_PROPIED=propieda.ID_CLAVE)  AS ALQUILADA' );
     { -------> }
       SQL.Add( '  FROM propieda INNER JOIN (propieta INNER JOIN pertenec ON propieta.ID_CLAVE = pertenec.ID_PROPIET) ON propieda.ID_CLAVE = pertenec.ID_PROPIED' );
       if( Condicion<>'' ) then begin
           SQL.Add( ' ORDER BY '+Condicion+';' );
       end;
       Open;
       ...
       Close;
  end;{ del with ZQuery_CLIE do }


He probado con ORDER BY ALQUILADA DESC y me genera errores

Gracias
Salvica
Responder Con Cita
  #2  
Antiguo 08-01-2008
Avatar de juanlaplata
juanlaplata juanlaplata is offline
Miembro
 
Registrado: ene 2007
Ubicación: La Plata, Bs. As. (Argentina)
Posts: 212
Poder: 18
juanlaplata Va por buen camino
Con solo poner
Código SQL [-]
Order By 3 desc;
si fuera la tercer columna por la que queremos el orden.
Responder Con Cita
  #3  
Antiguo 09-01-2008
Avatar de salvica
salvica salvica is offline
Miembro
 
Registrado: mar 2004
Ubicación: Albacete (España) ... En un lugar de la Mancha ...
Posts: 304
Poder: 21
salvica Va por buen camino
Gracias juanlaplata, no había caido en ordenar por número de columna

Voy a abusar un poco más de ti , en este caso la subconsulta debe arrojar una cadena o un nulo, pero en otra que debe hacerlo con el número de inmuebles que tiene un propietario (cero o un valor) parece que el ordenamiento no la afecta ¿es normal?
Código Delphi [-]
{ Condicion = '11 DESC' }
  with ZQuery_CLIE do begin
       SQL.Clear;
       SQL.Add( 'SELECT propieta.id_CLAVE,' );
       SQL.Add( '       propieta.NOMBRE, propieta.APELLIDO_1, propieta.APELLIDO_2,' );
       SQL.Add( '       propieta.NIF, propieta.TELEFONO_1,' );
       SQL.Add( '       propieta.DIRECCION, propieta.LOCALIDAD, propieta.PROVINCIA, propieta.C_POSTAL,' );
       SQL.Add( '      (SELECT COUNT(pertenec.ID_PROPIED) FROM pertenec WHERE pertenec.ID_PROPIET=propieta.id_CLAVE)  AS ALQUILER' );
       SQL.Add( '  FROM propieta' );
       if( Condicion<>'' ) then begin
           SQL.Add( ' ORDER BY '+Condicion+';' );
       end;
       Open;
       ..
       Close;
  end;{ del with ZQuery_CLIE do }

Gracias por todo
Salvica
Responder Con Cita
  #4  
Antiguo 10-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Claro que no es normal. El ordenamiento siempre debe funcionar, dentro de las reglas y convenciones del motor que uses.

Por ejemplo, algunos motores tomarán los nulos como el valor mas bajo, mientras que otros como el valor mas alto.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Colocar el resultado en una columna u Otra Carmelo Cash SQL 4 21-06-2006 01:53:23
Ordenar Listview por columna Coco_jac Varios 10 03-01-2006 19:03:20
resultado en nodos (cxGrid) solo me aperese el primero del select, relacion columna = sakuragi OOP 1 29-07-2005 17:17:55
Resultado de un select HugoH Conexión con bases de datos 1 29-04-2004 00:56:47
Resultado de un select vacio jourdan SQL 4 22-03-2004 17:27:42


La franja horaria es GMT +2. Ahora son las 23:15:28.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi