PDA

Ver la Versión Completa : Ordenar por campo lookup


xerkan
15-01-2004, 19:14:22
Tengo una tabla en interbase asociada a una query a la cual le he añadido un nuevo campo de tipo lookup para q me muestre el campo nombre que esta en otra tabla segun si su codigo coincide con el que esta en la tabla asociada a la query, el problema es que quiero poder mostrar en un grid los datos de la tabla y que los pueda mostrar ordenados por el nombre que coje de la segunda tabla (estilo select * from tabla order by nombre) pero al ser un campo lookup no se puede ordenar con un order by

__cadetill
16-01-2004, 00:23:07
Lo que quieres hacer sólo lo conseguirás si haces una Query con una join entre las dos talbas y entonces utilizar el order by

Algo así más o menos


select *
from tabla1 a
join tabla2 b on (b.campounion = a.campounion)
where lo que sea
order by nombre

xerkan
16-01-2004, 08:58:06
Bien ahora vamos a complicarlo un poquitin mas como podria hacerlo si las dos tablas se encuentran en bases de datos distintas??

una en db1.fdb y la otra en db2.fdb

__cadetill
16-01-2004, 09:31:12
si accedes a las bases de datos mediante el BDE, mírate lo que dice la ayuda del Local SQL sobre las Heterogeneous joins


Joins two tables from different databases.

SELECT column_list

FROM ":database_reference:table_reference", ":database_reference:table_reference" [,":database_reference:table_reference"...]

WHERE predicate [AND predicate...]

Description

Use a heterogeneous join to join two tables that reside in different databases. The joined tables may be of different types (like dBASE to Paradox or Paradox to InterBase), but you can only join tables whose database types are accessible through the BDE (local, ODBC, or SQL Links). A hetergeneous join may be any of the joins supported by local SQL. The difference is in the syntax for the table reference: the database containing each table is specified in the table reference, surrounded by colons and the whole reference enclosed in quotation marks. The database specified as part of the table reference may be a drive and directory reference (for local tables) or a BDE alias.

SELECT *

FROM ":DBDEMOS:Customer.db" C, ":BCDEMOS:Orders.db" O

WHERE (C.CustNo = O.CustNo)


Espero te sirva

xerkan
16-01-2004, 09:53:50
El problema es q no hacedo mediante BDE sino por las IBOObject y no se cual sera su equivalente en este caso a database_reference.

A la base de datos accedo mediante un TIB_connection el cual tiene como referencia para acceder: 172.26.0.7:/datos/bd.fdb (uso dialecto 3)

__cadetill
16-01-2004, 09:59:08
No se con IBO ya que nunca los he utilizado, pero con IBX o FIBPlus no se puede. Lo de las Heterogeneous joins es una característica del BDE que lo que hace, básicamente, es, internamente, lanzar un SQL sobre cada tabla para despues unirlas y, el resultado, es lo que devuelve al cliente