簡體   English   中英

連接具有兩個相同列的兩個表

[英]Joining two tables having two same columns

我正在用 mysql 數據庫制作一個學校項目。

准備好表后,我需要創建一個查詢,將 ReciverID 和 SenderID 與 accounts.Email 列連接起來。 我嘗試了許多解決方案,但我所有的嘗試都導致重復或錯誤。 結果應如下所示

我有表“帳戶”

CREATE TABLE IF NOT EXISTS `accounts` (
  `AccountID` INT(11) NOT NULL AUTO_INCREMENT,
  `Email` VARCHAR(128) NOT NULL,
  `Password` VARCHAR(128) NOT NULL,
  `Balance` DOUBLE(10, 5) NOT NULL DEFAULT 10,
  `VerifyCode` INT(6) NOT NULL,
  PRIMARY KEY (`AccountID`),
  UNIQUE INDEX `Email_UNIQUE` (`Email`),
  UNIQUE INDEX `VerifyCode_UNIQUE` (`VerifyCode`)
)

和表“交易”

CREATE TABLE IF NOT EXISTS `mydb`.`transactions` (
  `TransactionID` INT(11) NOT NULL AUTO_INCREMENT,
  `SenderID` INT(11) NOT NULL,
  `ReciverID` INT(11) NOT NULL,
  `Date` INT(32) NOT NULL,
  `Note` VARCHAR(256) NULL DEFAULT NULL,
  `Amount` DOUBLE(10, 5) NOT NULL,
  PRIMARY KEY (`TransactionID`),
  INDEX `Sender_idx` (`SenderID`),
  INDEX `reciver_fk_idx` (`ReciverID`),
  CONSTRAINT `reciver_fk` FOREIGN KEY (`ReciverID`) REFERENCES `accounts` (`AccountID`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  CONSTRAINT `sender_fk` FOREIGN KEY (`SenderID`) REFERENCES `accounts` (`AccountID`) ON DELETE NO ACTION ON UPDATE NO ACTION
)

感謝您的回復!

您可以嘗試使用別名。

就像是

Select T.TransactionID, S.email, R.email, T.date, T.note, T.Amount 
From Transactions T, Accounts S, Accounts R
Where T.SenderID = S.AccountID AND T.ReceiverID = R.AccountID AND 
--The rest of your conditions

PS:我不建議命名列日期......這是一個通常會導致錯誤的關鍵字

編輯

基於@HoneyBadger 評論,逗號連接樣式已過時......所以這是另一種方法

Select T.TransactionID, S.email, R.email, T.date, T.note, T.Amount 
From Transactions T
Join Accounts S On T.SenderID = S.AccountID
Join Accounts R On T.ReceiverID = R.AccountID 
--add your conditions

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM