0
選擇記錄和檢查總和我有一個表KIOSKSQL查詢:在連接表
CREATE TABLE IF NOT EXISTS `kiosk` (
`id` varchar(40) NOT NULL,
`netId` varchar(40) NOT NULL,
`name` varchar(255) NOT NULL,
`countryId` varchar(40) NOT NULL,
`cityId` varchar(40) NOT NULL,
`address` varchar(255) NOT NULL,
`lat` varchar(50) NOT NULL,
`long` varchar(50) NOT NULL,
`venue` varchar(255) NOT NULL,
`impressions` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
和一張桌子PLACEMENT
CREATE TABLE IF NOT EXISTS `placement` (
`id` varchar(40) NOT NULL,
`userId` varchar(40) NOT NULL,
`adId` varchar(40) NOT NULL,
`duration` int(11) NOT NULL,
`kioskId` varchar(40) NOT NULL,
`zoneId` varchar(40) NOT NULL,
`dateBegin` int(11) NOT NULL,
`dateEnd` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
展示位置意味着對信息亭發佈廣告。 每個展示位置都有一個持續時間和開始和結束髮布的日期。 允許在一個自助服務終端上編輯一個240秒的不同廣告塊,這塊 塊將在白天一次又一次旋轉。
現在我需要選擇具有足夠時間的特定城市的廣告亭來添加廣告。
正如我所看到的,我需要選擇自助服務終端並將已添加到該自助服務終端的展示位置的時長加起來,以檢查是否可以在表中添加展示位置記錄。
我想是這樣
SELECT *, SUM(`placement`.`duration`) AS `d`
FROM `kiosk`
LEFT OUTER JOIN `placement` ON ((`cityId` = 'bac3d991-d13c-49c2-8563-8f974c75f6b9')
AND (`placement`.`kioskId` = `kiosk`.`id`)
AND ((`placement`.`dateBegin` BETWEEN 1333929600 AND 1333929600))
OR (`placement`.`dateEnd` BETWEEN 1333929600 AND 1333929600)))
GROUP BY `kiosk`.`id`
HAVING `d` <=225
OR `d` IS NULL
這225塊的可能使用的秒數(我希望把15秒廣告在這個例子中),並且如果沒有放置記錄這個亭子我檢查d
爲成爲NULL
似乎我做的一切都是錯誤的,因爲我收到所有自助服務終端的列表,沒有mather它是什麼的cityId或與其鏈接的展示位置。
我將感謝任何幫助
這似乎更接近我所需要的,但現在它retirns任何行。我想這是因爲在展示位置表中沒有匹配的記錄 – necrobear 2012-04-09 15:48:50