PDA

View Full Version : مشکل در کوئری گرفتن



amdvbgmail
جمعه 17 مرداد 1393, 11:57 صبح
با سلام خدمت دوستان من دارم یه وب سایت کوچیک طراحی میکنم اما به یه مشکلی بر خوردم .این جدول مربوط میشه به قسمت درخواست دوستی.



CREATE TABLE IF NOT EXISTS `Freind` ( `one_id` int(11) NOT NULL,
`two_id` int(11) NOT NULL,
`status` enum('0','1','2') NOT NULL,
`created_at` TIMESTAMP NOT NULL,
`updated_at` TIMESTAMP NOT NULL
,PRIMARY KEY (`one_id`,`two_id`),FOREIGN KEY (`one_id`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,FOREIGN KEY (`two_id`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)ENGINE=InnoDB DEFAULT CHARSET=utf8;


بعد از این جدول یه جدول دیگه دارم به صورت زیر

CREATE TABLE IF NOT EXISTS `messg` ( `m_id` int(11) auto_increment NOT NULL,
`content` text NOT NULL,
`user_id` int(11) NOT NULL,
`reciver_id` int(11) NOT NULL,
`created_at` TIMESTAMP NOT NULL,
`updated_at` TIMESTAMP NOT NULL,
`replied` boolean NOT NULL,
PRIMARY KEY (`m_id`),FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,FOREIGN KEY (`reciver_id`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)ENGINE=InnoDB DEFAULT CHARSET=utf8;


حالا میخوام به عنوان مثال برای کاربر A میخوام تمام رکورد های جدول messg رو با این شرایط که reciver_id توی جدول messg توی جدول Freind با کاربر A دوست باشه!یه کم پیچیده شد ، درکل میخوام فعالیت های دوستان یک کاربر که تو جدول messg انجام میشه رو بخونم.
ممنون

Reza1607
شنبه 18 مرداد 1393, 08:30 صبح
سلام
از این کوئری استفاده کن

SELECT * FROM messg AS m WHERE reciver_id IN (
SELECT two_id FROM Friend WHERE one_id = m.user_id
)



البته به نظرم بهتر تا اول از جدول Friend شناسه دوستان فرد رو دربیاری بعد با کوئری زیر messg ها رو از دیتابیس بگیری
# $friends شناسه دوستان



$sql ='SELECT * FROM messg WHERE reciver_id = '.implode(' OR reciver_id = ',$friends);