我有两个访问表: 消息包含:
有
的用户。 这两个表在UserID和MessageTO之间有关系。
我的用户连接,我必须检查它是否是我数据库中正确的登录名/密码。然后我需要显示两个表的信息。 我不知道如何加入他们。
<%
var mycon;
mycon = new ActiveXObject("ADODB.Connection");
var myrec = new ActiveXObject("ADODB.Recordset");
mycon.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Omnivox.mdb");
var txtpassword = Request.QueryString("txtpassword");
var txtuserID = parseInt (Request.QueryString("txtuserID"));
if (txtpassword == "" || txtuserID == "")
{
Response.Redirect("index.aspx");
}
sql= "SELECT * FROM UserOmnivox WHERE UserID=" +txtuserID+ " AND UserPassword='" + txtpassword + "';";
var sql;
myrec. Open (sql, mycon);
%>
答案 0 :(得分:0)
tb_Message表
+-----------+-------------+-----------+----------------+--------------+
| MessageID | MessageFrom | MessageTo | MessageSubject | Message |
+-----------+-------------+-----------+----------------+--------------+
| 1 | 1 | 2 | Test Subject | Test Message |
+-----------+-------------+-----------+----------------+--------------+
带有样本数据的tb_User表
+--------+----------+----------+
| UserID | UserName | Password |
+--------+----------+----------+
| 1 | User1 | 1234 |
+--------+----------+----------+
| 2 | User2 | 4321 |
+--------+----------+----------+
考虑到上面的数据结构,下面的查询可以帮助您提取数据 -
SELECT M.MessageID, U1.UserName AS MessageFrom, U2.UserName AS MessageTo, M.MessageSubject, M.Message
FROM (tb_Message M
INNER JOIN tb_Users U1 ON M.MessageFrom = U1.UserID)
INNER JOIN tb_Users U2 ON M.MessageTo = U2.UserID
这将显示结果为 -
+-----------+-------------+-----------+----------------+--------------+
| MessageID | MessageFrom | MessageTo | MessageSubject | Message |
+-----------+-------------+-----------+----------------+--------------+
| 1 | User1 | User2 | Test Subject | Test Message |
+-----------+-------------+-----------+----------------+--------------+
答案 1 :(得分:0)
您可以使用JOINS
,在这种情况下,您可以查询(这是一些包含某些列的示例):
SELECT U.username, U.password, M.messages
FROM User U INNER JOIN Message M ON U.UserID=M.MessageTO
您必须使用别名来引用表User(U)或Message(M),并在条件上添加JOIN
,这意味着具有关系的列。< / p>
PD:这是一个很好的做法,在表名中使用单数中的单词,而不是复数。
答案 2 :(得分:0)
您的加入查询基本上是
Select M.MessageFrom, M.MessageTO, M.MessageSubject
FROM Messages M
INNER JOIN User U
ON M.MessageTO = U.UserID;
但是,还有更多要解决的问题。您应该使用paramterized queries而不是字符串连接。您目前容易受到SQL injection
的攻击我也很好奇为什么我在你的代码中看到&lt;%。这让我相信我正在查看aspx文件而不是aspx.cs文件。此代码应位于以.cs
结尾的文件中话虽如此,我没有大量的网络形式经验,也没有很多声誉点。我的答案可能并不完全符合您的需求,但希望这些链接可以提供一些帮助。