如何在SQL中显示3个表的某些列?

时间:2018-11-27 21:35:37

标签: sql sqlite

我有3个表:DirectoryIndex index.php RewriteEngine on #Force www: RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE] #Removing .PHP Extension RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^(.+?)/?$ $1.php [L] # Set XSS Protection header <IfModule mod_headers.c> Header set X-XSS-Protection "1; mode=block" </IfModule>

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代码,尽管语法有误,尤其是:

Prestam, Book, User

, Pr.Id_User = User.Id_User

目标是向我展示以下内容:

  • Id_Prestam
  • Date_Prest
  • Date_Dev
  • 标题
  • 名称
  • 姓氏

有什么办法可以做到这一点?

我听说过要创建视图,但是我不知道如何处理

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

5 个答案:

答案 0 :(得分:1)

要解决该特定的语法错误,由于为User表赋予了Usr的别名,因此您需要更改以下内容:

, Pr.Id_User = User.Id_User

对此:

, Pr.Id_User = Usr.Id_User

然后,您需要使用JOIN语句将表连接在一起。 WHERE语句不允许您将表连接在一起。

答案 1 :(得分:1)

您的SQL代码中有一个错字。 在查询的这一部分中,您引用的是User表别名:

, Pr.Id_User = User.Id_User

但是该别名不存在,而是称为Usr

最重要的是,您应该使用JOIN而不是在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

答案 2 :(得分:0)

看起来您可以在表上进行某种连接。

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

答案 3 :(得分:0)

将Prestam与其他2个表一起加入:

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;

答案 4 :(得分:0)

解决方案->将昏迷更改为AND

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