Как показать несколько столбцов из 3 таблиц в SQL? - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть 3 таблицы: Prestam, Book, User.

Таблица Prestam

  1. Id_Prestam
  2. Date_Prest
  3. Date_Dev
  4. ссылка Id_Book
  5. ссылка Id_User

Таблица Книга

  1. Id_Book
  2. Заголовок

Таблица Пользователь

  1. Id_User
  2. Имя
  3. Фамилия

Вот мой код SQL, хотя в синтаксисе есть ошибка, а именно:

, Pr.Id_User = User.Id_User

SELECT 
    Pr.Id_Prestam, Pr.Date_Prest, Pr.Date_Dev,
    Lbr.Title,
    Usr.Name, Usr.Last Name 
FROM 
    Prestam Pr, Book Lbr, User Usr 
WHERE 
    Pr.Id_Book = Lbr.Id_Book, Pr.Id_User = Usr.Id_User

Цель - показать мне следующее:

  • Id_Prestam
  • Date_Prest
  • Date_Dev
  • Заголовок
  • Имя
  • Фамилия

Есть ли способ сделать это возможным?

Я слышал о создании представлений, но я не знаю, как с этим справиться

CREATE VIEW List AS

Ответы [ 5 ]

0 голосов
/ 28 ноября 2018

Решение -> изменить кома на И

SELECT 
    Pr.Id_Prestam, Pr.Date_Prest, Pr.Date_Dev,
    Lbr.Title,
    Usr.Name, Usr.Last Name 
FROM 
    Prestam Pr, Book Lbr, User Usr 
WHERE 
    Pr.Id_Book = Lbr.Id_Book AND Pr.Id_User = Usr.Id_User
0 голосов
/ 28 ноября 2018

Присоединитесь к Prestam с двумя другими столами:

SELECT 
Prestam.Id_Prestam, Prestam.Date_Prest, Prestam.Date_Dev, 
Book.Title, 
User.Name, User.`Last Name`
FROM 
    (Prestam INNER JOIN Book ON Prestam.Id_Book = Book.Id_Book) 
        INNER JOIN User 
        ON Prestam.Id_User = User.Id_User;
0 голосов
/ 28 ноября 2018

Похоже, что вы можете сделать какое-то соединение на столах.

то есть

select * 
from Prestam P 
inner join Book B on P.ID_Book = B.ID_Book
inner join User U on P.ID_User = U.ID_User
0 голосов
/ 28 ноября 2018

В вашем коде SQL есть опечатка.В этой части запроса вы ссылаетесь на псевдоним таблицы User:

, Pr.Id_User = User.Id_User

Но этот псевдоним не существует, он называется Usr.

Нижняя строка, вы должны использовать JOIN s вместо заполнения ваших отношений в предложении WHERE.

Вот новый запрос:

SELECT 
    Pr.Id_Prestam,
    Pr.Date_Prest,
    Pr.Date_Dev,
    Lbr.Title,
    Usr.Name,
    Usr.Last Name 
FROM Prestam Pr
INNER JOIN Book Lbr on Pr.Id_Book = Lbr.Id_Book
INNER JOIn User Usr on Pr.Id_User = Usr.Id_User
0 голосов
/ 28 ноября 2018

Чтобы устранить эту конкретную синтаксическую ошибку, поскольку вы дали таблице User псевдоним Usr, вам необходимо изменить это:

, Pr.Id_User = User.Id_User

На это:

, Pr.Id_User = Usr.Id_User

Затем вам нужно взглянуть на использование оператора JOIN для объединения таблиц.Оператор WHERE не позволяет объединять таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...