Запрос SQL Server для проверки доступности книги в библиотеке

#sql-server

#sql-сервер

Вопрос:

Я пытаюсь проверить, доступна ли введенная книга no или нет. Я использовал BOOK таблицу, в которую добавлены все книги. Есть еще одна таблица с именем, BORROWED где Issuedate перечислены Returndate . Вот запрос

 select * 
from BORROWED, BOOK 
where BookCode = ? 
  and BORROWED.BookCode = BOOK.BookCode 
  and BORROWED.Returned is null 
  

Но показывает эту ошибку :

Неоднозначное имя столбца ‘BookCode’

Комментарии:

1. Вредные привычки, от которых следует отказаться: использование объединений в старом стиле — этот стиль списка таблиц, разделенных запятыми, в старом стиле был заменен на надлежащий синтаксис ANSI в стандарте ANSI- JOIN 92 SQL ( более 20 лет назад), и его использование не рекомендуется………………….. (

Ответ №1:

В обеих таблицах у вас есть столбец с именем BookCode . Вам нужно назвать таблицу. В противном случае DB engines не знает, какую из них вы имеете в виду.

 SELECT *
FROM BORROWED
JOIN BOOK ON BORROWED.BookCode = BOOK.BookCode
WHERE BORROWED.BookCode = ?
  AND BORROWED.Returned IS NULL 
  

Ответ №2:

Вы можете использовать псевдонимы и присоединяться

 SELECT `b`.*
  FROM `BORROWED` `b`
  INNER JOIN `BOOK` AS `c` ON `c`.`BookCode` = `b`.`BookCode`
  WHERE `b.`BookCode` = ?
    AND `b`.`Returned` IS NULL
  

Ответ №3:

Это сообщение об ошибке генерируется из-за того, что обе ваши таблицы имеют одинаковое имя столбца. Чтобы предотвратить ошибки такого типа, привыкайте использовать псевдонимы в своих запросах:

    SELECT *
    FROM BORROWED AS br 
        JOIN BOOK AS b 
            ON b.BookCode = br.BookCode
            WHERE 
                br.BookCode = ?
            AND br.Returned IS NULL