Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Почему неправильно работает INNER JOIN? / 10 сообщений из 10, страница 1 из 1
30.11.2001, 15:21
    #32018222
Vlad N
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему неправильно работает INNER JOIN?
Таблицы 'Продукция' и 'Книги' связаны отношением 1 к 1 (через ключевое поле 'продукция_ид').
При выполнении простого запроса:

select Продукция.продукция_ид,Продукция.имя
from Продукция inner join Книги on Продукция.продукция_ид=Книги.продукция_ид

выбираются все записи из таблицы 'Продукция', независимо от того, есть ли в 'Книги'
совпадающие записи.

Я заметил, что это происходит только, если связь [FK_Продукция_Книги] имеет установленный
флажок 'Inforce relationship for INSERT's and UPDATE's'.

Это действительно глюк компилятора запросов или я чего-то не понимаю?
Если глюк, то поможет ли Service Pack1?
...
Рейтинг: 0 / 0
30.11.2001, 15:38
    #32018224
Timur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему неправильно работает INNER JOIN?
У меня в подобоном Вашему примеру все работает исключительно точно.
Причем совершенно не зависит от флажка 'Enforce relationship for INSERT's and UPDATE's'.
Правда, мои таблицы и поля озаглавлены английскими буквами, может дело в этом??
...
Рейтинг: 0 / 0
30.11.2001, 15:42
    #32018228
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему неправильно работает INNER JOIN?
У меня SQL2000 SP1 - все работает правильно
...
Рейтинг: 0 / 0
30.11.2001, 15:58
    #32018233
Vlad N
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему неправильно работает INNER JOIN?
Причина найдена.

Согласно связи [FK_Продукция_Книги] в таблице 'Продукция' не может быть записей, у которых поле 'продукция_ид' не имеет соответствия в 'Книги'.
А она имела.
Очевидно это сбивало с толку компилятор.

Спасибо всем за советы.
...
Рейтинг: 0 / 0
30.11.2001, 16:04
    #32018236
Timur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему неправильно работает INNER JOIN?
Познавательно...
Т.е. Вы имели дело с нарушением целостности БД...
Учту...
...
Рейтинг: 0 / 0
30.11.2001, 16:25
    #32018240
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему неправильно работает INNER JOIN?
2Vlad N
Скорее всего вы создавали этот relation когда в таблицах уже были данные и при создании не выбрали опцию Check existing data on creation. Так ли было ?
...
Рейтинг: 0 / 0
30.11.2001, 16:25
    #32018241
andy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему неправильно работает INNER JOIN?
А если не секрет, то зачем Вам вообще понадобилась связь 1:1? Вы таким образом от нулов избавляетесь что ли?
...
Рейтинг: 0 / 0
03.12.2001, 16:21
    #32018353
Garya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему неправильно работает INNER JOIN?
Лично я использую связи 1:1 в следующих случаях (либо в их совокупности):
1. Когда таблица получается сильно разряженной, собираю поля, в которых значения бывают очень редко в отдельную таблицу. Число записей в ней получается небольшим.
2. Когда нужно получить высокое быстродействие по кластерному индексу. Делается на стороне PK с малым количеством основных полей, все остальные выносятся в отдельную таблицу.
3. Когда нужно разделить удобным образом доступ к двум группам полей одной таблицы между разыми пользователями. Для пары связанных таблиц права доступа могут быть разными.
...
Рейтинг: 0 / 0
03.12.2001, 16:26
    #32018354
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему неправильно работает INNER JOIN?
Насчет 3-го пункта
Не правильнее ли создать 2 view-a и назначать права для них, а не на таблицу ?
...
Рейтинг: 0 / 0
04.12.2001, 18:02
    #32018438
Garya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему неправильно работает INNER JOIN?
Согласен. П.3 отдельно сам по себе - не совсем правильный выбор. Но в комбинации с п.1 и/или п.2 он усиливает положительный эффект от разделения.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Почему неправильно работает INNER JOIN? / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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