Оракул
Оракул
(62089)
3 года назад
Так вы с заданием-то определитесь
В экстрадишн у вас хранятся выдачи книг, вы джойнитесь на нее зачем-то, в селекте всего 2 поля оттуда участвуют id выдачи и пользователя
Вот у вас и выводятся все выдачи одной и той же книги
Все логично, что написали, то и получили
Уберите джойны на экстрадишн и не будет нескольких строк
Хз, что за задание у вас вообще, что хотите получить
МаксяУченик (137)
3 года назад
Хочу с помощью запроса получить все книги что имеются в бд, и вывести на руках ли они кого-то или в библиотеке
МаксяУченик (137)
3 года назад
Что конкретно поменять в запрос, подскажите пожалуйста. И да, спасибо огромное за попытку помочь)
Алексей Хвостовский
Мудрец
(18147)
3 года назад
Изначально как-то странно..
Пусть будет таблица с клиентами и таблица с книгами..
И связывающая таблица с полями: ид книга, ид клиент, дата выдача, дата возврат. Ну и кто выдал книгу так же по ид, если надо. Сотрудников и читателей отделять, кстати, тоже не помешало бы хотя бы по полю-признаку. Ну или так же многие-ко-многим с таблицей должностей к примеру.
В общем, где возврат пустой, та книга на руках с такой-то даты, у того-то читателя. Это как раз при выдаче надо проверять, есть ли в библиотеке книга. Количество экземпляров одной книги привязать не сложно, если вдруг одинаковые книги будут.. Добавить в таблицу книг экземпляры числовым полем и проверять при селекте количество строк с пустыми датами по ид книги. Сравнивать с числовым полем из таблицы книг, короче..
Так же можно посмотреть историю где была книга, что, я так понимаю, нужно.. Просто селектом по ид книги.
Так бы получилось по одному запросу с двумя внутренними соединениями. Без внешних всегда проще, как по мне..
А перенести данные можно если что через insert into select. Если менять архитектуру. Я бы пока не поздно, поменял.. Можно без потерь.
Надеюсь, понятно излагаю.. в голове каша у меня. В режиме диалога я лучше)
Хотя.. тебе лучше знать что делать, у тебя уже 12 ноября.. А я тут в сентябре еще застрял..
SELECT
books.id As books_id,
books.tiitle as books_title,
books.description as books_desc,
books.article as books_article,
books.date as books_date,
extradition.client_id AS extradition_client_id,
books.author as books_author,
extradition.id as extradition_id,
extradition.user_id as ext_user_id,
employee.first_name as employee_first_name,
employee.middle_name as employee_middle_name,
employee.last_name as employee_last_name,
return_books.extradition_id as return_books_ext_id
FROM
books
left JOIN extradition on extradition.book_id = books.id
left join employee on employee.id = extradition.client_id
left JOIN return_books on return_books.extradition_id= extradition.id
проблема в том, что когда я выдаю какую либо книгу второй раз пользователю, он отображает ее в этом запросе, как избавиться от этого?
Не знаю на сколько понятно объяснил... но как вы можете наблюдать на первом скриншоте, данный запрос мне 3 раза выводит одну и туже книгу, тк я ее 2 раза выдавал