问题
I have 2 tables.
The fisrt: Users
The second: Messages
My tables relationships:
My problem is: I need a query that returns me the all the Messages for reciver (the parameter) and the MessageSenderID and MessageReciverID as name, not as id.
my query:
SELECT Message.MessageID, Message.MessageSubject, Message.MessageContent,
u1.UserFisrtName + '' + u1.UserLastName AS Sender1,
u2.UserFisrtName + '' + u2.UserLastName AS Reciver1
FROM Users AS u1,
Users AS u2,
Messages
WHERE u1.UserID = Message.MessageSenderID
AND u2.UserID = Message.UserID
AND u2.UserID = ***userid***
The error is:
no value given for one or more required parameters.
回答1:
You should use a JOIN statement
SELECT * FROM messages
JOIN user u1 ON (u1.id = message.MessageSenderID)
JOIN user u2 ON (u2.id = message.essageReciverID)
More info on Join: http://www.mysqltutorial.org/mysql-inner-join.aspx
For the parameter problem see this question: Pass parameters to sql script
The parameter can be used as following:
WHERE u2.id = @userid
回答2:
SELECT Messages.MessageID, Messages.MessageSubject, Messages.MessageContent,
s.UserFisrtName & ' ' & s.UserLastName AS Sender,
r.UserFisrtName & ' ' & r.UserLastName AS Reciver
FROM (Messages
INNER JOIN Users AS s ON s.UserID = Messages.MessageSenderID)
INNER JOIN Users AS r ON r.UserID = Messages.MessageReciverID
WHERE r.UserID = **userid**;
来源:https://stackoverflow.com/questions/46462536/sql-query-from-two-tables-and-several-rows