связать таблицы

hexen
Дата: 17.12.2002 15:25:51
Срочный вопрос возник
Как скриптом связать следующие таблицы(упрощенно)
1:фамилия,номер
2:номер, номер телефона
Естественно идет в голову left join и номер1=номер2
но в таблице 2 может быть несколько телефонов с одним номером2
(на одного человека) и left join дает двух Ивановых с разными
телефонами а это один человек и надо оставить одну запись

Поможите кто чем может!
mahoune
Дата: 17.12.2002 15:33:46
А ты сам ответил на свой вопрос!
...left join дает двух Ивановых с разными
телефонами а это один человек и надо оставить одну запись...


Вот тебе и надо понять:
1. Какой телефон вывести
1.1. Может их (телефоны) вывести через запятую, но это только через ХП или кодом в программе
1.2. Или выводить только один первый попавшийся

2. А что делать если телефона нет?! Тут только LEFT JOIN спасет отца русской демократии!

3. Можно вообще строить структурированный список:

ИВАНОВ
Телефон(ы): 123-4567
123-9876

ПЕТРОВ
Телефон(ы): 987-6543

СИДОРОВ
Телефон(ы): НЕТ


Но это тоже либо ХП либо кодом в программе!
hexen
Дата: 18.12.2002 07:35:20
может я недостаточно ясно выразился?
Ну тогда еще проще.
Как в таблице с телефонами отобрать только с уникальным полем номер
Я пока нашел только метод с пересозданием таблицы с созданием
индекса с ignore_dup_key...
Неужели проще нельзя?
LexusR
Дата: 18.12.2002 08:42:22
Можно примерно так
таблица персон
create table Persons (PersonID integer, Surname varchar(50))
таблица телефонов
create table Phones (PersonID integer, Phone varchar(50))

select Pr.PersonID,
Pr.Surname,
coalesce((select top 1 Phone from Phones where PersonID = Pr.PersonID),'нет')as Phone
from Persons Pr
hexen
Дата: 18.12.2002 10:45:47
To:LexusR

Большой дружеский thanks!
Вовремя выручил -думал мозги закипят.