作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在开发一个在线游戏拍卖网站。但是,在创建统计信息时,我遇到了查询问题。
问题是我需要拥有我参与过的和我丢失的所有拍卖。但到目前为止,我只看到能够获得所有丢失的拍卖(不仅仅是我参加的拍卖)。
假设我有以下表格:
表拍卖的表结构
CREATE TABLE IF NOT EXISTS `Auction` (
`id` varchar(50) NOT NULL,
`preferedAuctionId` varchar(50) NOT NULL,
`winningTicketId` int(11) NOT NULL DEFAULT '-1',
`createdOn` datetime NOT NULL,
`startedOn` datetime NOT NULL,
`finishedOn` datetime NOT NULL,
`active` tinyint(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
AuctionBids
CREATE TABLE IF NOT EXISTS `AuctionBids` (
`bidId` varchar(50) NOT NULL,
`accountId` varchar(50) NOT NULL,
`auctionId` varchar(50) NOT NULL,
`ticketId` int(50) NOT NULL,
`datetime` datetime NOT NULL,
PRIMARY KEY (`bidId`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
以下是我尝试过的一些查询。
SELECT *
FROM Auction au, AuctionBids ab
WHERE au.id = ab.auctionId AND au.winningTicketId = ab.ticketId AND
ab.accountId NOT LIKE '". $_accountId ."' AND
au.finishedOn NOT LIKE '0000-00-00 00:00:00' AND au.active = '0'
和
SELECT *
FROM Auction
WHERE winningTicketId NOT IN
( SELECT ticketId
FROM AuctionBids
WHERE accountId = '". $_accountId ."')
AND finishedOn NOT LIKE '0000-00-00 00:00:00' AND active = '0'
如果您缺少任何重要信息,请询问我,我会为您提供。
您真诚的,拉西1
在你的本地主机上测试我做了一个测试转储:
预期结果:
accountId '{0D3FB1B2-1C0C-06EA-979A-15F5B5231E7C}' 的人赢得了他参与的所有拍卖,这意味着他返回的行数应该为 0。
accountId为“{65CC1576-C3C3-5AC1-8098-B8CF1347F481}”的人失去了他参与的所有拍卖,这意味着他返回的行应该是1。
最佳答案
也许是这样?
SELECT distinct a.* FROM Auction a JOIN AuctionBids ab ON a.id = ab.auctionId
WHERE a.winningTicketId not in
(select ticketId from AuctionBids WHERE accountId = '". $_accountId ."'
and a.id = auctionId)
AND a.id in
(select auctionId from AuctionBids WHERE accountId = '". $_accountId ."')
AND a.active = '0'
AND finishedOn NOT LIKE '0000-00-00 00:00:00';
已编辑。在 SQLFiddle 中尝试
关于php - WHERE .. IN 查询的困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20323456/
我是一名优秀的程序员,十分优秀!