A pergunta é mais ou menos respondida, gostaria apenas de adicionar alguns comentários para apontar a flexibilidade e o poder de fazer coisas assim com sql espacial
Enquanto leio a pergunta, ela pode ser dividida em duas perguntas. Uma pergunta GIS e uma pergunta sql sobre como combinar linhas em tabelas diferentes.
A parte gis pode, como mencionado antes, ser melhor resolvida com ST_MakeLine, se houver dois pontos que você deseja conectar à sua linha. Se fossem linhas ou polígonos, você poderia usar ST_Shortestline para obter uma linha das geometrias entre os pontos mais próximos. Isso funcionará com pontos, linhas e polígonos.
A outra parte é sobre como conectar o ponto de armazenamento certo ao ponto de cliente certo.
Essa é uma pergunta básica do banco de dados. Entendimento que dará muito mais prazer ao uso do PostGIS.
A situação mais fácil é uma loja com muitos clientes. Então você só precisa de uma tabela de clientes e seu ponto de loja, e seria algo como:
Select ST_Makeline(customers.the_geom, yourPoint) from custmers;
Se você tiver sua única loja em uma tabela, ficaria assim:
Select ST_Makeline(customers.the_geom, stores.the_geom) from custmers, stores;
Mas se houver muitas lojas e cada cliente estiver usando apenas uma loja, você obterá uma solução parecida com as outras respostas aqui, por exemplo:
Select ST_Makeline(customers.the_geom, stores.the_geom)
from custmers, stores
where customers.storeid = stores.id;
O PostgreSQL manipulará essa consulta da mesma maneira que:
Select ST_Makeline(customers.the_geom, stores.the_geom)
from custmers inner join stores
on customers.storeid = stores.id;
Mas, no mundo real, você provavelmente encontrará a situação em que a maioria dos clientes está usando muitas lojas. Em exemplos anteriores, tivemos a relação de uma loja para muitos clientes, agora temos uma situação de muitos para muitos. Muitos clientes usando muitas lojas.
Depois, há uma solução ruim que você vê às vezes. As pessoas adicionam uma nova linha de cliente para cada loja que ele usa. Isso causará muitos problemas se, por exemplo, você quiser alterar o endereço dele, em muitos lugares. O banco de dados mais correto para fazer isso é criar uma "tabela de links". Não sei se essa é a palavra certa em inglês, mas de qualquer maneira. Essa é uma tabela que contém todos os dados específicos para a relação dos clientes com cada loja que ele usa. Então você tem três mesas. Um com lojas e todos os atributos pertencentes à loja, como quando está aberto e o número de telefone para entrar em contato. Então você tem a tabela de clientes, talvez com endereço e número de telefone para o cliente. Então você tem essa "tabela de links" que deve incluir um ID para a loja, o ID do cliente e talvez informações adicionais, como a frequência de visita a uma loja em particular, a distância da loja ou a linha que você está criando (mas é melhor criar distância e linha rapidamente quando você precisar). Então, com essa nova tabela, sua consulta seria semelhante a:
Select ST_Makeline(customers.the_geom, stores.the_geom)
from customers inner join
c_s_link_table on customers.id = c_s_link_table.customerid
inner join stores
on c_s_link_table.storeid = stores.id;
Então você tem toda a flexibilidade. Digamos, por exemplo, que você adicione à sua tabela de links quantas vezes por mês o cliente visita essa loja. Então você pode escrever uma consulta como esta:
Select ST_Makeline(customers.the_geom, stores.the_geom),
c_s_link_table.visits_per_month from
customers inner join c_s_link_table on customers.id = c_s_link_table.customerid
inner join stores on c_s_link_table.storeid = stores.id;
então você pode usar esse atributo, visits_per_month, para definir a espessura de suas linhas no mapa, ilustrando quantas visitas cada loja recebe.