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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2012, 23:46   #1
bagor
 
Регистрация: 18.12.2012
Сообщений: 3
Восклицание Трабл в запросе

Всем Добрый вечер. Прошу помощи. Собственно таблицы, и запрос:
Код:
SELECT books.* FROM Books NOT IN (SELECT books.* FROM books INNER JOIN arenda ON books.ID_book=arenda.ID_book);

Почему то постоянно ругается на "ошибка синтаксиса в предложении from".
З.Ы. Кстати вопрос в тему, а EXCEPT нельзя юзать в Access 10?
bagor вне форума Ответить с цитированием
Старый 19.12.2012, 04:42   #2
Pilyla
Пользователь
 
Регистрация: 16.12.2012
Сообщений: 42
По умолчанию

books.* а чего тут точка. и пробела нет
Pilyla вне форума Ответить с цитированием
Старый 19.12.2012, 08:58   #3
bagor
 
Регистрация: 18.12.2012
Сообщений: 3
По умолчанию

books.* - все поля из таблицы books, хотя применение не рационально тут, эквивалент этому, просто *. Но сути не меняет.
bagor вне форума Ответить с цитированием
Старый 19.12.2012, 08:58   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
books.* а чего тут точка. и пробела нет
не путайте автора темы, тут всё нормально!

1-х. формально ошибка тут:
Цитата:
... FROM Books NOT IN (
ошибка в пропуске ключевых слов.
что означает NOT IN чего "НЕТ В" ?
нужно указать WHERE и поле
вот так, например:
Код:
SELECT books.* FROM Books 
WHERE КлючевоеПоле NOT IN 
  (select books.КлючевоеПоле from books INNER JOIN arenda ON books.ID_book=arenda.ID_book);
а во-вторых, мне кажется, что Вы сами себя запутали. Зачем Вам два select'а ? Подозреваю, что в данном случае вполне одним можно обойтись..
Вы какую задачу решаете?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.12.2012, 09:06   #5
bagor
 
Регистрация: 18.12.2012
Сообщений: 3
По умолчанию

Нужно выбрать из таблицы books, все строки, кроме тех, ID_book которых совпадают в таблице books и arenda.
Пример: в таблице arenda есть ID_book со значениями 1,2; в таблице books, есть ID_book со значениями 1,2,3,4. В результате выполнения нужно получить только строки из таблицы books, где ID_book = 3,4.
bagor вне форума Ответить с цитированием
Старый 19.12.2012, 09:09   #6
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

кроме INNER JOIN есть другие жойны... например LEFT
без проверки на вскидку
select books.* from books LEFT JOIN arenda ON books.ID_book=arenda.ID_book WHERE arenda.ID_book IS NOT NULL
Не стесняемся, плюсуем!

Последний раз редактировалось Slym; 19.12.2012 в 09:12.
Slym вне форума Ответить с цитированием
Старый 19.12.2012, 09:43   #7
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

Код:
select * from books where not exists (select * from arenda where arenda.id_book =books.id_book)
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
трабл №2 ZMEY_KORAL Общие вопросы C/C++ 1 20.09.2012 22:53
трабл)))) ZMEY_KORAL Общие вопросы C/C++ 0 20.09.2012 22:18
Новичок с++ трабл user1112 Помощь студентам 0 30.06.2011 19:40
трабл БД cyber_NINJA Помощь студентам 0 20.05.2010 17:42
трабл Informer Общие вопросы C/C++ 0 02.06.2009 15:21