iranme
شنبه 07 دی 1392, 11:48 صبح
درود،
من دو تا جدول دارم با اطلاعات زیر:
CREATE TABLE IF NOT EXISTS `outcomedrug` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`patientid` int(11) NOT NULL,
`asdate` date NOT NULL,
`todate` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci AUTO_INCREMENT=4;
--
-- Dumping data for table `outcomedrug`
--
INSERT INTO `outcomedrug` (`id`, `patientid`, `asdate`, `todate`) VALUES
(1, 2, '2013-12-23', '2013-12-23'),
(2, 2, '2013-12-24', '2013-12-27'),
(3, 1, '2013-12-21', '2013-12-27'),
(4, 2, '2013-12-26', '2013-12-30');
CREATE TABLE IF NOT EXISTS `patient` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(200) COLLATE utf8_persian_ci NOT NULL,
`surname` varchar(200) COLLATE utf8_persian_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci AUTO_INCREMENT=3 ;
--
-- Dumping data for table `patient`
--
INSERT INTO `patient` (`id`, `name`, `surname`) VALUES
(1, 'اصغر', 'اصغری'),
(2, 'بابک', 'بابکی');
حالا میخوام یک کوئری بگیرم که نام و نام خانوادگی فردی که مقدار asdate اش برابر با تاریخ امروز بود را فقط نشان بدهد و اگر بعد از تاریخ امروز دوباره در آینده تاریخ داشته باشد را نشان ندهد.
یعنی در مثال بالا میخوام اصغر اصغری نشان داده بشود (با فرض اینکه تاریخ امروز برابر 2013-12-27 باشد) ولی بابک بابکی نشان داده نشه.
من از کوئری زیر استفاده میکنم تاریخ را درست نشان میده (فقط امروز) ولی همه کسانی که تاریخ امروز را دارند را نشان میده.
SELECT outcomedrug.patientid, outcomedrug.todate, patient.id, patient.name, patient.surname FROM outcomedrug JOIN patient ON outcomedrug.patientid = patient.id WHERE outcomedrug.todate = '2013-12-27' GROUP BY (patient.id) ORDER BY patient.name DESC
ممنون میشم من را راهنمائی کنید.
من دو تا جدول دارم با اطلاعات زیر:
CREATE TABLE IF NOT EXISTS `outcomedrug` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`patientid` int(11) NOT NULL,
`asdate` date NOT NULL,
`todate` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci AUTO_INCREMENT=4;
--
-- Dumping data for table `outcomedrug`
--
INSERT INTO `outcomedrug` (`id`, `patientid`, `asdate`, `todate`) VALUES
(1, 2, '2013-12-23', '2013-12-23'),
(2, 2, '2013-12-24', '2013-12-27'),
(3, 1, '2013-12-21', '2013-12-27'),
(4, 2, '2013-12-26', '2013-12-30');
CREATE TABLE IF NOT EXISTS `patient` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(200) COLLATE utf8_persian_ci NOT NULL,
`surname` varchar(200) COLLATE utf8_persian_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci AUTO_INCREMENT=3 ;
--
-- Dumping data for table `patient`
--
INSERT INTO `patient` (`id`, `name`, `surname`) VALUES
(1, 'اصغر', 'اصغری'),
(2, 'بابک', 'بابکی');
حالا میخوام یک کوئری بگیرم که نام و نام خانوادگی فردی که مقدار asdate اش برابر با تاریخ امروز بود را فقط نشان بدهد و اگر بعد از تاریخ امروز دوباره در آینده تاریخ داشته باشد را نشان ندهد.
یعنی در مثال بالا میخوام اصغر اصغری نشان داده بشود (با فرض اینکه تاریخ امروز برابر 2013-12-27 باشد) ولی بابک بابکی نشان داده نشه.
من از کوئری زیر استفاده میکنم تاریخ را درست نشان میده (فقط امروز) ولی همه کسانی که تاریخ امروز را دارند را نشان میده.
SELECT outcomedrug.patientid, outcomedrug.todate, patient.id, patient.name, patient.surname FROM outcomedrug JOIN patient ON outcomedrug.patientid = patient.id WHERE outcomedrug.todate = '2013-12-27' GROUP BY (patient.id) ORDER BY patient.name DESC
ممنون میشم من را راهنمائی کنید.