Модераторы: Akella

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите найти ошибку 
:(
    Опции темы
BORINSHTEIN
Дата 7.5.2008, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 10.12.2006

Репутация: нет
Всего: нет



Код

select * from AUTHOR where
AUTHOR.AID in (select AUTHOR.AID from 
AUTHORSHIP where BOOKS.BID =: BOOKS.BID)



пишет Parameter name expected
PM MAIL   Вверх
BORINSHTEIN
Дата 7.5.2008, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 10.12.2006

Репутация: нет
Всего: нет



Вообще я правильно пытаюсь в датасете прописать для случая многие ко многим ?

Это сообщение отредактировал(а) BORINSHTEIN - 7.5.2008, 18:30
PM MAIL   Вверх
Fortop
Дата 7.5.2008, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: нет
Всего: 42



Код

select AUTHOR.AID from AUTHORSHIP

Объясни, каким образом ты надеешься вытащить поле AID находящееся в таблице AUTHOR из таблицы AUTHORSHIP?


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
BORINSHTEIN
Дата 7.5.2008, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 10.12.2006

Репутация: нет
Всего: нет



Не успел отписать. Это я заметил. написал новое, но что-то опять не пашет (((

Код

select * from AUTHOR where
AUTHOR.AID in ( select AUTHORSHIP.AID from 
AUTHORSHIP where AUTHORSHIP.BID = :BOOKS.BID ) ;


Добавлено через 10 минут и 3 секунды
При попытке добавить поля в датасет выдает
Dynamic SQL Error
SQL error code= -104
Token unknown - line 3, column 34
PM MAIL   Вверх
Fortop
Дата 8.5.2008, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: нет
Всего: 42



Не понимает вот этой конструкции 
Код

:BOOKS.BID 


Добавлено через 55 секунд
Это, ты бы структуры привел что ли smile
Было бы гадать удобнее smile


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Deniz
Дата 8.5.2008, 05:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



BORINSHTEIN, а для чего там ";" в конце запроса?
И еще, лучше заменить конструкцию типа select ... from ... where field in (select ...) на обычный join, практически всегда можно.
Код
select AUTHOR.* 
from AUTHOR
  join AUTHORSHIP on AUTHOR.AID = AUTHORSHIP.AID
where AUTHORSHIP.BID = :BOOKS.BID



--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
BORINSHTEIN
Дата 10.5.2008, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 10.12.2006

Репутация: нет
Всего: нет



Fortop, да есть BOOKS и есть AUTHOR. Связь многие ко многим. И есть таблица AUTHORSHIP, в которой поля BID и AID - это ключи из BOOKS и AUTHOR. Вроде бы не все так мудрено, но вот что-то не выходит.
PM MAIL   Вверх
Fortop
Дата 10.5.2008, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: нет
Всего: 42



BORINSHTEIN, если у тебя BOOKS это таки таблица, то возможно стоит делать так?

Код

select * from AUTHOR where
AUTHOR.AID in ( select AUTHORSHIP.AID from 
AUTHORSHIP where AUTHORSHIP.BID = BOOKS.BID ) ;


или так

Код

select * from AUTHOR 
JOIN AUTHORSHIP ON AUTHORSHIP.AID = AUTHOR.AID
JOIN BOOKS ON AUTHORSHIP.BID = BOOKS.BID;


Это сообщение отредактировал(а) Fortop - 10.5.2008, 11:46


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
BORINSHTEIN
Дата 10.5.2008, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 10.12.2006

Репутация: нет
Всего: нет



Ща испытаем =)  smile

Добавлено через 7 минут и 35 секунд
Fortop, спасибо. smile  В наборе данных появились поля всех 3 таблиц. Сейчас буду их подчинять )))  
PM MAIL   Вверх
BORINSHTEIN
Дата 10.5.2008, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 10.12.2006

Репутация: нет
Всего: нет



Произошли какие-то косяки ((( 
В способе с JOIN. Только хотел сменить Active датасета на True, как вышла ошибка Column unknown ASNAME (Фамилия автора).
А если использую другой способ то пишет при добавлении полей в датасет Column unknown BOOKS.BID
PM MAIL   Вверх
Fortop
Дата 10.5.2008, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: нет
Всего: 42



BORINSHTEIN
в первом способе у тебя данные только из таблицы AUTHOR

Во втором (где JOIN), из всех таблиц, но возможно у тебя имеются одинаковые названия столбцов
поэтому лучше вместо * явно указать ИМЯ_ТАБЛИЦЫ.ИМЯ_ПОЛЯ
для всех данных, которые ты хочешь получить.

Добавлено через 2 минуты и 16 секунд
Ах, да. В первом способе действительно не найдет BOOKS.BID - используй лучше тот что с JOIN
а первый нужно переделать с использованием вложеных подзапросов.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
BORINSHTEIN
Дата 10.5.2008, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 10.12.2006

Репутация: нет
Всего: нет



Нет, ну конечно BID  - это первичный ключ BOOKS, но он так же содержится как внешний ключ в таблице AUTHORSHIP
PM MAIL   Вверх
Fortop
Дата 10.5.2008, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: нет
Всего: 42



BORINSHTEIN, абсолютно ничего непонятно smile
проверяй все свои запросы в первую очередь в IBExpert, потом уже используй в компонентах.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
BORINSHTEIN
Дата 10.5.2008, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 10.12.2006

Репутация: нет
Всего: нет



В наборе данных появились поля. Мне кажется что в наборе данных стоит что-то удалить из этого ? 
AID - Идентификатор из Авторов
ASNAME - Фам (Авторы).
AFNAME - Имя. (Авторы)
ALNAME - Отч (Авторы)
BID - Идентификатор из Книги
AID1 - из таблицы Авторство. (но н так же назывался AID. В наборе данных сдал AID1, видимо из-за повторения)
BID1 - из таблицы Книги ( АНАЛОГИЧНО )
BNAME - Название киги
BYEAR - Год издания
PID - Издатель (Идентификатор. Сменю на лукап)
PM MAIL   Вверх
Fortop
Дата 10.5.2008, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: нет
Всего: 42



BORINSHTEIN, как я и говорил, попробуй ограничить вывод, явным указанием полей и из какой базы ты берешь.
ИМЯ_ТАБЛИЦЫ.ИМЯ_ПОЛЯ

Возможно, это поможет.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Firebird, Interbase | Следующая тема »


 




[ Время генерации скрипта: 0.0882 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.