[英]mysql select all records where a datetime field is less than a specified value
[英]How to select maximum of all values in datetime field but less or equal to other datetime value?
這是我的桌子,很la腳,但不要注意:
CREATE TABLE items (
item_id int(11) NOT NULL AUTO_INCREMENT,
item_name varchar(255) NOT NULL,
item_cat int(11) NOT NULL,
item_desc text DEFAULT NULL,
item_cost decimal(10, 0) DEFAULT NULL,
item_image varchar(255) NOT NULL,
item_brand varchar(255) DEFAULT NULL,
item_active int(11) NOT NULL,
PRIMARY KEY (item_id)
)
CREATE TABLE prices (
price_id decimal(10, 0) NOT NULL,
price_date datetime NOT NULL,
price decimal(10, 0) DEFAULT NULL,
fake int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (fake)
)
CREATE TABLE orders (
order_id int(11) NOT NULL AUTO_INCREMENT,
order_fam varchar(255) NOT NULL,
order_name varchar(255) NOT NULL,
order_otc varchar(255) DEFAULT NULL,
order_phone varchar(255) NOT NULL,
order_email varchar(255) DEFAULT NULL,
order_delivery int(11) NOT NULL,
order_payment int(11) NOT NULL,
order_comment varchar(255) DEFAULT NULL,
order_status int(11) DEFAULT NULL,
order_adress varchar(255) DEFAULT NULL,
order_user_id int(11) DEFAULT NULL,
order_date datetime DEFAULT NULL,
PRIMARY KEY (order_id)
)
mysql_query('SET NAMES utf8');
$query = 'SELECT *
FROM
prices
WHERE
price_date IN (SELECT MAX(price_date) FROM prices WHERE price_id= ' . $it . ')';
price_id對item_id的引用
但是,這是交易。
現在,我希望應用程序在訂單(order_date)時顯示商品的價格,並且在“價格”中有這樣的價格歷史記錄:
2013-04-19 10:13:51 $ 2000
2013-03-21 11:15:56 $ 3000
2013-02-03 10:45:22 $ 1400
因此,到目前為止,我只是從該表中選擇了最大日期。 您如何建議我修改查詢? (“價格”的最大日期時間,但小於或等於order_date)
編輯:我想選擇在訂單(order_date字段)時處於活動狀態的價格值(price字段)。 因此,如果order_date = 2013-03-29 11:15:56則價格= $ 3000而不是$ 2000而不是$ 1400
我認為您的查詢可以改善:
SELECT *
FROM prices
ORDER BY price_date DESC LIMIT 1;
如果您是我,我還將在訂單表中添加一個字段“ price_id”,當您需要在下訂單時調回預價時,這將是您選擇的鈎子:
SELECT o.*, p.price
FROM orders o
INNER JOIN prices p ON (o.price_id = p.price_id);
希望對您有所幫助!
SELECT p1.* FROM
prices p1
inner join prices p2 on p1.price_date < p2.price_date
WHERE
p2.price_date = 'some date'
ORDER BY p1.price DESC LIMIT 1
解決方法如下:
mysql_query('SET NAMES utf8');
$query = 'SELECT *
FROM
prices
WHERE
price_id = ' . $it . ' AND price_date <= "' . $date . '" ORDER BY price_date DESC LIMIT 1';
我真的不需要LIMIT,因為我沒有在數組中運行任何循環,這只是為了清楚起見
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.