Мои две таблицы следующие:
Table 1 : Transaction
TRANS_ID (primary key), TRANS_DATE, TRANS_STATUS, USER_ID (Foreign_Key)
Тот же идентификатор_пользователя будет повторяться при изменении статуса
Table 2 : Users
USER_ID (Primary_Key), USER_NAME, USER_DOB, OTHER_INFO
Я хочу получить информацию о пользователе вместе с состоянием последней транзакции.
Мне знаком следующий запрос.
SELECT MAX(Transaction.TRANS_DATE),Transaction.TRANS_STATUS, Users.USER_NAME, Users.USER_DOB
FROM Users
INNER_JOIN Transaction ON Transaction.USER_ID = Users.USER_ID
WHERE Transaction.USER_ID = @UserID
Я передаю UserID
с Parameter.AddWithValue
.К сожалению, этот метод не возвращает TRANS_STATUS
для MAX(TRANS_DATE)
.Он возвращает MAX(TRANS_DATE)
, но TRANS_STATUS
- это первое вхождение, а не соответствующая запись STATUS
- MAX(TRANS_DATE)
.
Пожалуйста, дайте мне знать, как я могу получить TRANS_STATUS
для MAX(TRANS_DATE)
,Я предпочитаю использовать INNER JOIN
, но рекомендации приветствуются.
Я все еще не мог приступить к работе.
Вот мои скрипты таблиц.
CREATE TABLE `Transactions` (
`TRANS_ID` int(11) NOT NULL,
`TRANS_DATE` datetime NOT NULL,
`TRANS_STATUS` varchar(45) NOT NULL,
`USER_ID` int(11) NOT NULL,
PRIMARY KEY (`TRANS_ID`),
UNIQUE KEY `TRANS_ID_UNIQUE` (`TRANS_ID`),
KEY `USER_ID_idx` (`USER_ID`),
CONSTRAINT `USER_ID` FOREIGN KEY (`USER_ID`) REFERENCES `Users` (`USER_ID`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE `Users` (
`USER_ID` int(11) NOT NULL AUTO_INCREMENT,
`USER_NAME` varchar(45) NOT NULL,
`USER_DOB` datetime NOT NULL,
`OTHER_INFO` varchar(45) NOT NULL,
PRIMARY KEY (`USER_ID`),
UNIQUE KEY `USER_ID_UNIQUE` (`USER_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8