Es un poco confusa tu pregunta así que voy a tratar de adivinar un poco.
Supongo que la primera tabla a que te refieres es una tabla de personas con una llave foránea pra la ciudad y tienes otra tabla para las ciudades. Algo como:
personas = (id, nombre, ciudad_id)
ciudades = (id, ciudad)
Supongamos que tienes componentes TTable, tblPersonas y tblCiudades para las tablas personas y ciudades, que dsrPersonas y dsrCiudades son DataSource enlazados a los Table y que cbCiudades es un DBLookupComboBox. Entonces puedes ajustar las propiedades de cbCiudades como sigue:
Código Delphi
[-]
cbCiudades.ListSource := dsrCiudades;
cbCiudades.ListField := 'ciudad';
cbCiudades.KeyField := 'id';
cbCiudades.DataSource := dsrCiudades;
cbCiudades.DataField := 'ciudad_id';
Con esto podrás editar el campo ciudad_id con el combo cbCiudades.
Otra opción es agregar un campo de tipo lookup a tblCiudades:
En el editor de campos de tblCiudades (doble click sobre la componente) añades todos los campos que te interese mostrar de la tabla y luego agregas uno nuevo de tipo Lookup. Llenas sus propiedades como sigue:
Name - ciudad
Type - String
Size - lo que mida el campo ciudad en la tabla ciudades
DataSet - tblCiudades
ResultField - ciudad
Lookup Keys - id
Key Fields - ciudad_id
De esta forma tu tabla listará un campo ciudad como si estuviera presente físicamente en la tabla y puedes mostarlo directamente en culaquier control "data aware".
// Saludos