[英]mySql combine two SELECT queries with JOIN
我有兩個mySql查詢來從數據庫中獲取結果。 我正在努力將他們團結在一起。
查詢1:
SELECT userEwallets.id as ewalletId, users.id as userId , money_repositories.money as money, a.nestedUserId
FROM userEwallets
JOIN users ON users.id = userEwallets.userId
JOIN money_repositories ON userEwallets.id = money_repositories.ewalletId
WHERE ewalletNumber = 'SHIRR937303656'
查詢2:
SELECT nested.id as nestedUserId
FROM userEwallets as nested
JOIN users ON users.id = nested.userId
JOIN money_repositories ON nested.id = money_repositories.ewalletId
WHERE ewalletNumber = 'SHIRR9122331743'
然后我的組合命令:
SELECT userEwallets.id as ewalletId, users.id as userId , money_repositories.money as money, a.nestedUserId
FROM (
SELECT nested.id as nestedUserId
FROM userEwallets as nested
JOIN users ON users.id = nested.userId
JOIN money_repositories ON nested.id = money_repositories.ewalletId
WHERE ewalletNumber = 'SHIRR912233'
) as a
JOIN users ON users.id = userEwallets.userId
JOIN money_repositories ON userEwallets.id = money_repositories.ewalletId
WHERE ewalletNumber = 'SHIRR93730'
我收到此錯誤:
#1054 - Unknown column 'userEwallets.id' in 'field list'
這兩個命令相同,但是它們在where
子句中與ewalletNumber
有簡單的區別
使用數據庫結構更新
money_repositories
表:
CREATE TABLE IF NOT EXISTS `money_repositories` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`userId` int(11) NOT NULL,
`ewalletId` int(11) NOT NULL,
`money` int(11) NOT NULL,
`createdAt` int(11) NOT NULL,
`updatedAt` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci AUTO_INCREMENT=4 ;
userEwallets
表:
CREATE TABLE IF NOT EXISTS `userEwallets` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`userId` int(11) NOT NULL,
`ewalletNumber` varchar(15) COLLATE utf8_persian_ci NOT NULL,
`currencySymbol` varchar(5) COLLATE utf8_persian_ci NOT NULL,
`createdAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`updatedAt` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci AUTO_INCREMENT=7 ;
users
表:
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(20) COLLATE utf8_persian_ci NOT NULL,
`password` varchar(65) COLLATE utf8_persian_ci NOT NULL,
`name` varchar(20) COLLATE utf8_persian_ci NOT NULL,
`family` varchar(20) COLLATE utf8_persian_ci NOT NULL,
`birthDay` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
`email` varchar(20) COLLATE utf8_persian_ci NOT NULL,
`mobileNumber` varchar(15) COLLATE utf8_persian_ci NOT NULL,
`verifyCode` varchar(5) COLLATE utf8_persian_ci NOT NULL,
`photoUri` varchar(50) COLLATE utf8_persian_ci NOT NULL,
`ebanNumber` varchar(20) COLLATE utf8_persian_ci NOT NULL,
`status` tinyint(1) NOT NULL,
`createdAt` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`updatedAt` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci AUTO_INCREMENT=35 ;
userEwallets.id
應a.id
在選擇你的組合命令。 因為你得到的子查詢作為a
。
修改后的組合查詢;
SELECT a.id AS ewalletId,
users.id AS userId,
money_repositories.money AS money,
a.nesteduserid
FROM (SELECT nested.id AS nestedUserId,
nested.id,
nested.ewalletnumber
FROM userewallets AS nested
JOIN users
ON users.id = nested.userid
JOIN money_repositories
ON nested.id = money_repositories.ewalletid
WHERE nested.ewalletnumber = 'SHIRR912233') AS a
JOIN users
ON users.id = userewallets.userid
JOIN money_repositories
ON userewallets.id = money_repositories.ewalletid
WHERE a.ewalletnumber = 'SHIRR93730'
camleCase查詢已修復:
SELECT a.id AS ewalletId,
users.id AS userId,
money_repositories.money AS money,
a.nestedUserId
FROM (SELECT nested.id AS nestedUserId,
nested.id,
nested.ewalletNumber
FROM userEwallets AS nested
JOIN users ON users.id = nested.userId
JOIN money_repositories ON nested.id = money_repositories.ewalletId
WHERE nested.ewalletNumber = 'SHIRR912233') AS a
JOIN users ON users.id = nested.userId
JOIN money_repositories ON userEwallets.id = money_repositories.ewalletId
WHERE a.ewalletNumber = 'SHIRR937303'
因為您沒有在查詢中包括表userEwallets
,但在子查詢中將無法識別該表,但子查詢除外。 嘗試
更新
Select
users.id as userId, userEwallets.id As ewalletId,money_repositories.money
From
users
Inner Join
userEwallets ON userEwallets.userId= users.id
Inner Join
money_repositories ON money_repositories.userId=users.id
And
money_repositories.ewalletId = userEwallets.id
Where
userEwallets.ewalletNumber = 'SHIRR93730'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.