Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2013, 13:28   #1
lexflax
Пользователь
 
Регистрация: 12.04.2011
Сообщений: 74
Сообщение Результат запроса не тот

Доброго времени суток...
в sqlite создал базу структура такая...
sqlite> pragma foreign_keys=on;
sqlite> CREATE TABLE GosSp (
...> kodG integer PRIMARY KEY NOT NULL,
...> Namespg text NOT NULL UNIQUE
...> );
sqlite> CREATE TABLE VuzSp (
...> kodSV integer PRIMARY KEY NOT NULL,
...> Namespv text NOT NULL UNIQUE,
...> Namekrat text NOT NULL
...> );
sqlite> CREATE TABLE Kvalif (
...> kodK integer PRIMARY KEY NOT NULL,
...> Namekvf text NOT NULL UNIQUE
...> );
sqlite> CREATE TABLE Speciliz (
...> kodS integer PRIMARY KEY NOT NULL,
...> Namespiciliz text NOT NULL UNIQUE
...> );
sqlite> CREATE TABLE Specvuza (
...> kodSV integer PRIMARY KEY NOT NULL,
...> kodS integer NOT NULL UNIQUE,
...> FOREIGN KEY (kodSV)
...> REFERENCES VuzSp(kodSV),
...> FOREIGN KEY (kodS)
...> REFERENCES Speciliz(kodS));
sqlite> CREATE TABLE kod (
...> kodSV integer PRIMARY KEY,
...> kodG integer NOT NULL,
...> kodK integer NOT NULL,
...> FOREIGN KEY (kodSV)
...> REFERENCES VuzSp(kodSV),
...> FOREIGN KEY (kodG)
...> REFERENCES GosSp(kodG),
...> FOREIGN KEY (kodK)
...> REFERENCES Kvalif(kodK));
Сейчас надо сделать запрос для вывода следующих полей (kodG,kodSV,Namespg,Namespv,Namekra t,Namespiciliz,Namekvf)
когда делаю такой запрос
Код:
SELECT distinct kod.kodG,kod.kodSV,Namespg FROM kod natural join GosSp; ТО ВЫВОДИТ 3 ПОЛЯ В КОТОРЫХ КОРРЕКТНО ОТОБРАЖЕННА ИНФОРМАЦИЯ ИЗ ТАБЛИЦЫ... НО СТОИТ ДОБАВИТЬ ЕЩЕ ОДНО ПОЛЕ И ТАБЛИЦУ-
SELECT distinct kod.kodG,kod.kodSV,Namespg,Namespv FROM kod natural join GosSp natural join VuzSp;
ТО ПРОИСХОДИТ ДЕКАРТОВО ПРОИЗВЕДЕНИЕ, МОЖНО КАК ТО ВСЕ ЭТИ ДАННЫЕ ВЫВЕСТИ КОРРЕКТНО???
Изображения
Тип файла: jpg аа.jpg (53.4 Кб, 103 просмотров)
Тип файла: jpg вв.jpg (73.3 Кб, 101 просмотров)

Последний раз редактировалось Stilet; 06.06.2013 в 14:31.
lexflax вне форума Ответить с цитированием
Старый 06.06.2013, 13:50   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

что такое - natural join ?
eval вне форума Ответить с цитированием
Старый 06.06.2013, 14:37   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
natural join соединяет таблицы по столбцам с одинаковыми именами (SQL.ru)
Надо же. Для 1-го запроса понятно. Для второго - видимо нет полей с совпадающими именами во всех 3-х таблицах. Использовать JOIN ... ON без всяких NATURAL
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 06.06.2013, 16:17   #4
lexflax
Пользователь
 
Регистрация: 12.04.2011
Сообщений: 74
По умолчанию

Улудшил запрос стал таким
SELECT distinct kod.kodG,kod.kodSV,Namespg,Namespv, Namekrat FROM GosSp natural join kod natural join VuzSp natural join Specvuza;
Проблема в соединении последних таблиц VuzSP - это специальности Вуза и Specvuza - специализация, только у 8 специальностей Вуза есть специализация ... вот он мне выдает в отчете только 8 строк, а должен выдвать все 24 где 8 будут заполнены а остальные в этом поле пустые... как это условие можно прописать подскажите?
lexflax вне форума Ответить с цитированием
Старый 06.06.2013, 17:30   #5
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

уже все что надо подсказали.
выбросить natural join, и переписать правильно
eval вне форума Ответить с цитированием
Старый 07.06.2013, 17:53   #6
lexflax
Пользователь
 
Регистрация: 12.04.2011
Сообщений: 74
По умолчанию

да просто через join не катит...
lexflax вне форума Ответить с цитированием
Старый 07.06.2013, 18:19   #7
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

через джоин не может не кактить
eval вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
в программе по нахождению избыточности (код Хеминга) иногда выводится не тот результат Алексей_2012 Общие вопросы Delphi 25 10.03.2013 19:40
результат запроса Ko$tello БД в Delphi 7 18.04.2012 12:13
Массивы - не тот результат. amuleg Общие вопросы C/C++ 6 24.01.2012 14:25
результат запроса varyat Microsoft Office Access 3 02.12.2010 18:02
Не тот результат! Dawystrik Общие вопросы Delphi 3 22.03.2009 09:50