Консультация № 108693
09.11.2007, 13:32
0.00 руб.
0 7 7
select * from Adres, FIO

Adrec - таблица из счётчика и 1 поля Адрес, FIO - та же структура, но с полем FIO.
При приведённом выше запросе выдаёт в DBGrid такого плана таблицу:

Код ФИО Адрес
1 Фам1 Ад1
1 Фам2 Ад1
1 Фам3 Ад1
2 Фам2 Ад2
2 Фам3 Ад2
2 Фам1 Ад2
3 Фам3 Ад3
3 Фам1 Ад3
3 Фам2 Ад3

А по идее должно было быть так:

Код ФИО Адрес
1 Фам1 Ад1
2 Фам2 Ад2
3 Фам3 Ад3

Обсуждение

Неизвестный
09.11.2007, 13:36
общий
это ответ
Здравствуйте, Mamay!

select * from Adres t1, FIO t2 WHERE t1.имя_поля_счетчика = t2.имя_поля_счетчика
Неизвестный
09.11.2007, 13:49
общий
это ответ
Здравствуйте, Mamay!

Select * from Adres a, FIO f
where a.ID=f.ID
Неизвестный
09.11.2007, 14:31
общий
это ответ
Здравствуйте, Mamay!
Ну а где условие связки таблиц?
select * from Adres a, FIO f WHERE f.Адрес=a.Адрес
Неизвестный
09.11.2007, 14:35
общий
это ответ
Здравствуйте,

SELECT * FROM Adres, FIO WHERE Adres.id = FIO.id

(id — имя поля со счётчиком)
Неизвестный
09.11.2007, 17:58
общий
это ответ
Здравствуйте, Mamay!
правильно что выдаётся, там просто одно на другое множится )))
это как пароли подбирать, все варианты ))))

чем у тебя связаны эти две таблица ???
Неизвестный
10.11.2007, 09:39
общий
это ответ
Здравствуйте, Mamay!
При соединении таблиц надо обязательно указывать поля в обоих таблицах по которым происходит связывание. Если не указать то происходит связывание всех строк таблиц в различных вариантах так называемое "декартово соединение" как у Вас.
Попробуйте следующее:
select a.код , f.фио , a.адрес from Adres a inner join FIO f on a.код = f. код
Успехов.
Неизвестный
12.11.2007, 02:06
общий
это ответ
Здравствуйте, Mamay!
У вас делается выборка из двух таблиц, но нет условия, которое связывает их. Поэтому просто выбираются все записи из всех таблиц.
Судя по всему код привязки - поле "Код", поэтому могу предположить, что запрос должен быть такой:

Приложение:
SELECT Adres.КОД, FIO.ФИО, Adres.Адрес FROM Adres,FIO WHERE Adres.КОД = FIO.Код
Форма ответа