我有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
表书
表用户
这是我的SQL代码,尽管语法有误,尤其是:
Prestam, Book, User
, 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
答案 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