newb question là. Avoir base de données MySQL/structure tableaux ci-dessous:Problème MySQL avec plusieurs tables
CREATE DATABASE `dbTest`
CREATE TABLE IF NOT EXISTS `dbTest`.`tbUser` (
`UserId` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`Username` VARCHAR(45) NOT NULL ,
PRIMARY KEY (`UserId`))
ENGINE = InnoDB
CREATE TABLE IF NOT EXISTS `dbTest`.`tbTransactionType` (
`TypeId` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`Name` VARCHAR(45) NOT NULL ,
PRIMARY KEY (`TypeId`))
ENGINE = InnoDB
CREATE TABLE IF NOT EXISTS `dbTest`.`tbTransaction` (
`TransactionId` INT NOT NULL AUTO_INCREMENT ,
`UserId` INT UNSIGNED NOT NULL ,
`TransactionType` INT UNSIGNED NOT NULL ,
`Balance` DOUBLE NOT NULL ,
`Date` DATETIME NOT NULL ,
PRIMARY KEY (`TransactionId`) ,
INDEX `FK_tbTransaction_tbUser_UserId` (`UserId` ASC) ,
INDEX `FK_tbTransaction_tbTransactionType_TransactionId` (`TransactionType` ASC) ,
CONSTRAINT `FK_tbTransaction_tbUser_UserId`
FOREIGN KEY (`UserId`)
REFERENCES `dbTest`.`tbUser` (`UserId`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `FK_tbTransaction_tbTransactionType_TransactionId`
FOREIGN KEY (`TransactionType`)
REFERENCES `dbTest`.`tbTransactionType` (`TypeId`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
INSERT INTO `dbTest`.`tbUser` (`UserId`, `Username`) VALUES ('1', 'User1');
INSERT INTO `dbTest`.`tbTransactionType` (`TypeId`, `Name`) VALUES ('1', 'Deposite');
INSERT INTO `dbTest`.`tbTransactionType` (`TypeId`, `Name`) VALUES ('2', 'Withdraw');
INSERT INTO `dbTest`.`tbTransaction` (`TransactionId`, `UserId`, `TransactionType`, `Balance`, `Date`) VALUES (NULL, '1', '1', '200', NOW())
INSERT INTO `dbTest`.`tbTransaction` (`TransactionId`, `UserId`, `TransactionType`, `Balance`, `Date`) VALUES (NULL, '1', '2', '100', NOW())
INSERT INTO `dbTest`.`tbTransaction` (`TransactionId`, `UserId`, `TransactionType`, `Balance`, `Date`) VALUES (NULL, '1', '1', '20', NOW())
INSERT INTO `dbTest`.`tbTransaction` (`TransactionId`, `UserId`, `TransactionType`, `Balance`, `Date`) VALUES (NULL, '1', '2', '10', NOW())
Je voudrais obtenir l'dernière entrée de chaque type de transaction pour le UserId 1
Ceci est ma requête SQL:
SELECT U.Username, TT.Name, T.Balance, T.Date
FROM tbUser U
INNER JOIN tbTransaction T ON T.UserId = U.UserId
INNER JOIN tbTransactionType TT ON TT.TypeId = T.TransactionType
WHERE U.UserId = 1
Et le résultat est:
Username Name Balance Date
User1 Deposite 200 2010-11-26 23:11:40
User1 Deposite 20 2010-11-26 23:14:56
User1 Withdraw 100 2010-11-26 23:11:58
User1 Withdraw 10 2010-11-26 23:14:56
Quand je wou ld comme pour obtenir quelque chose comme:
Username Name Balance Date
User1 Deposite 20 2010-11-26 23:14:56
User1 Withdraw 10 2010-11-26 23:14:56
Je suis sûr que la solution est pas difficile, mais je ne peux pas comprendre en ce moment ...
J'ai aussi essayé un GROUP BY TT.TypeId
sans Succès.
Merci!
Salut, merci pour votre réponse. J'ai essayé celui-là aussi. Mais cela ne fonctionnera pas si les entrées dans 'tbTransaction' ne sont pas dans le bon ordre. Je veux dire, deux dépositions puis un retrait sont faits. Aussi, que se passe-t-il si plus de 'TransactionType' sont ajoutés? Ce 'Limit 2' ne fonctionnera pas. – Cybrix
donc vous voulez les deux derniers de chaque type? ce n'est pas ce que votre exemple de réponse reflète - c'est soit le total des deux derniers, ou le dernier de chaque type –
ok je vois votre édition –