Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / как связать две таблицы (есть мой код с ошибкой) / 21 сообщений из 21, страница 1 из 1
24.07.2004, 20:49:43
    #32620063
big-spoon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как связать две таблицы (есть мой код с ошибкой)
Уважаемые господа
в Ассеss97 (к базе обращаюсь из Delphi5 через ADO/Jet4) есть две таблицы,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
CREATE TABLE model (
id COUNTER, 
material VARCHAR( 50 ), 
influence VARCHAR( 50 ), 
typematerial VARCHAR( 50 ), 
comment VARCHAR( 50 ), 
check1 BIT, 
del BIT, 
time1 DATE, 
timeCalculation VARCHAR( 8 ),
FOREING KEY index1 (id)
REFERENCES experiment1 (idexp),
DELETE OF experiment1 CASCADES
)

CREATE TABLE experiment1 (
idexp INTEGER NOT NULL, 
t FLOAT, 
y1 DOUBLE, 
y2 DOUBLE, 
modelid VARCHAR( 50 ))


которые необходимо связать однин-ко-многим
по полям id(однин)->idexp(много),
с возможностью каскадного обновления при удалениях


возникают ошибки на строках

Код: plaintext
1.
2.
FOREING KEY index1 (id)
REFERENCES experiment1 (idexp),
DELETE OF experiment1 CASCADES
...
Рейтинг: 0 / 0
24.07.2004, 20:53:19
    #32620064
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как связать две таблицы (есть мой код с ошибкой)
FOREIGN
...
Рейтинг: 0 / 0
24.07.2004, 20:59:38
    #32620069
big-spoon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как связать две таблицы (есть мой код с ошибкой)
спасибо, а больше подозрительного ничего?
...
Рейтинг: 0 / 0
24.07.2004, 21:00:53
    #32620071
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как связать две таблицы (есть мой код с ошибкой)
Я такими командами не пользуюсь. Что заметил, то написал. :^)
...
Рейтинг: 0 / 0
24.07.2004, 21:01:17
    #32620072
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как связать две таблицы (есть мой код с ошибкой)
А если это исправить - сколько ошибок будет выдавать?
...
Рейтинг: 0 / 0
24.07.2004, 21:02:07
    #32620074
big-spoon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как связать две таблицы (есть мой код с ошибкой)
а как можно в обход команд предложенных мною?
...
Рейтинг: 0 / 0
24.07.2004, 21:04:01
    #32620076
big-spoon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как связать две таблицы (есть мой код с ошибкой)
исправл FOREIGN, все раввно ошибки есть
...
Рейтинг: 0 / 0
24.07.2004, 21:04:42
    #32620078
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как связать две таблицы (есть мой код с ошибкой)
big-spoonисправл FOREIGN, все раввно ошибки есть
А нам надо угадать, какие и где?
...
Рейтинг: 0 / 0
24.07.2004, 21:10:53
    #32620083
big-spoon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как связать две таблицы (есть мой код с ошибкой)
ошибка показывает на строку с Foregn и звучит она так:
ошибка синтаксиса в инструкции CREATE TABLE
...
Рейтинг: 0 / 0
24.07.2004, 21:17:18
    #32620086
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как связать две таблицы (есть мой код с ошибкой)
big-spoonошибка показывает на строку с Foregn
FORE I GN
...
Рейтинг: 0 / 0
24.07.2004, 21:18:40
    #32620087
big-spoon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как связать две таблицы (есть мой код с ошибкой)
в программе правильно писал, просто здесь ошибся (это относительно второго раза)
...
Рейтинг: 0 / 0
24.07.2004, 21:19:17
    #32620088
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как связать две таблицы (есть мой код с ошибкой)
Тогда не знаю. :^)
...
Рейтинг: 0 / 0
24.07.2004, 21:44:33
    #32620101
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как связать две таблицы (есть мой код с ошибкой)
в обратном порядке experiment1 - первым + в нём нужен ключ(у тебя счётчик должен был стать внешним ключом - я не понял) + про каскадное в 97 - не знаю

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CREATE TABLE experiment1 (
idexp INTEGER NOT NULL,
t FLOAT, 
y1 DOUBLE, 
y2 DOUBLE, 
modelid VARCHAR( 50 ),
CONSTRAINT PK PRIMARY KEY (idexp))

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE TABLE model (
id COUNTER, 
idexp long,
material VARCHAR( 50 ), 
influence VARCHAR( 50 ), 
typematerial VARCHAR( 50 ), 
comment VARCHAR( 50 ), 
check1 BIT, 
del BIT, 
time1 DATE, 
timeCalculation VARCHAR( 8 ),
CONSTRAINT bbb  FOREIGN KEY   (idexp)  REFERENCES experiment1 (idexp))
...
Рейтинг: 0 / 0
25.07.2004, 06:32:22
    #32620199
big-spoon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как связать две таблицы (есть мой код с ошибкой)
спасибо, круто, только связь нужна в обратном порядке.
...
Рейтинг: 0 / 0
25.07.2004, 06:36:56
    #32620200
big-spoon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как связать две таблицы (есть мой код с ошибкой)
так я сделал руками в самом Акссессе.

теперь нужно еще и программо
...
Рейтинг: 0 / 0
25.07.2004, 07:46:17
    #32620201
big-spoon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как связать две таблицы (есть мой код с ошибкой)
начну с азов, есть главная таблица model:
Код: plaintext
1.
2.
3.
id | material | influence | typematerial | comment | check | del | time       | timeCalculation
 ------------------------------------------------------------------------------------------------
 
 1   | Cu	      | press     | < 001 >	 | Cu500- 1  |    0    |   0   |  24 . 07 . 2004  |	 00 : 00 : 15 


одной строке которой соотвествует много строк подчиненных таблиц, структура которых аналогична
таблице experiment:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
id  |    t     |   y1	  |  y2    | 	
 ------------------------------------
 
 1    |  0 ,00E+ 00  |  1 ,00E+ 12  |  1 ,00E+ 12 
 1    |  1 ,00E- 03  |  1 ,03E+ 12  |  1 ,00E+ 12 
 1    |  2 ,00E- 03  |  1 ,07E+ 12  |  1 ,00E+ 12 
 1    |  3 ,00E- 03  |  1 ,10E+ 12  |  1 ,00E+ 12 
 1    |  4 ,00E- 03  |  1 ,14E+ 12  |  1 ,00E+ 12 
 1    |  5 ,00E- 03  |  1 ,18E+ 12  |  1 ,00E+ 12 
 1    |  6 ,00E- 03  |  1 ,22E+ 12  |  1 ,00E+ 12 
 1    |  7 ,00E- 03  |  1 ,26E+ 12  |  1 ,00E+ 12 
 1    |  8 ,00E- 03  |  1 ,30E+ 12  |  1 ,00E+ 12 
 1    |  9 ,00E- 03  |  1 ,33E+ 12  |  1 ,00E+ 12 
 1    |  1 ,00E- 02  |  1 ,37E+ 12  |  1 ,00E+ 12 
 1    |  1 ,10E- 02  |  1 ,41E+ 12  |  1 ,00E+ 12 
 1    |  1 ,20E- 02  |  1 ,46E+ 12  |  1 ,00E+ 12 
 1    |  1 ,30E- 02  |  1 ,50E+ 12  |  1 ,00E+ 12 

Нужно связать таблицы по полю id (главную таблице model c подчиненными).

Если есть необходимость использования допольнительного поля для связи,
то как это обосновывается (т.е. поля idexp) - быстрота, удобство, непротиворечивость?
где можно посмотреть толкое описание про связывание таблиц и ключи?

если я не прав - подскажите где.
...
Рейтинг: 0 / 0
25.07.2004, 07:47:26
    #32620202
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как связать две таблицы (есть мой код с ошибкой)
тады внешний ключ должен жить в experiment1 т.е. со стороны многих
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE model (
id COUNTER, 
material VARCHAR( 50 ), 
influence VARCHAR( 50 ), 
typematerial VARCHAR( 50 ), 
comment VARCHAR( 50 ), 
check1 BIT, 
del BIT, 
time1 DATE, 
timeCalculation VARCHAR( 8 ),
CONSTRAINT PK PRIMARY KEY (id))

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CREATE TABLE experiment1 (
idexp INTEGER NOT NULL,
t FLOAT, 
y1 DOUBLE, 
y2 DOUBLE, 
modelid VARCHAR( 50 ),
CONSTRAINT Forkey  FOREIGN KEY   (idexp)  REFERENCES model (id))
...
Рейтинг: 0 / 0
25.07.2004, 07:49:38
    #32620203
big-spoon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как связать две таблицы (есть мой код с ошибкой)
а хоть правильно называю таблицу model - главной?
...
Рейтинг: 0 / 0
25.07.2004, 08:29:44
    #32620207
big-spoon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как связать две таблицы (есть мой код с ошибкой)
а как добиться каскада при удалении/обновлении и
в параметрах объединения указать, что нужно объединять все записи из model
и только тех записей из experiment, в котроых связанные поля совпадают.
...
Рейтинг: 0 / 0
25.07.2004, 10:57:31
    #32620227
iska
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как связать две таблицы (есть мой код с ошибкой)
big-spoonа как добиться каскада

MS Knowledge Base:
...
Note: You cannot specify that you want "Cascade Updates" or "Cascade Deletes" with a relationship created using DDL. These features are available only when using the Microsoft DAO (Data Access Objects) interfaces via code or when using the Microsoft Access user interface (Добавлю от себя - или с использованием ADOX)
...
На всякий случай по-русски: через DDL никак, пользуй DAO, интерфейс Асс или ADOX.
...
Рейтинг: 0 / 0
25.07.2004, 10:59:15
    #32620228
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как связать две таблицы (есть мой код с ошибкой)
1 если Jet поддерживает ANSI-92 ,то
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE TABLE experiment1 (
idexp  INTEGER NOT NULL,
t FLOAT, 
y1 DOUBLE, 
y2 DOUBLE, 
modelid VARCHAR( 50 ),
CONSTRAINT Forkey  FOREIGN KEY  ( idexp)  REFERENCES model (id)
ON UPDATE CASCADE 
ON DELETE CASCADE
 )

2 - пиши Left в запросе на выборку ,зачем путать целостность и Null
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / как связать две таблицы (есть мой код с ошибкой) / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]