[font="Tahoma"][rtl]تصاویر ساختاری که گذاشته بود نصفه نیمه بود، نمیدونم چرا کوئریشو نزاشته بود.
من زحمت دوستان رو کم کردم و این کوئری تست است:[/rtl]
--
-- Table structure for table `gifts`
--
CREATE TABLE IF NOT EXISTS `gifts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_from` int(11) NOT NULL,
`user_to` int(11) NOT NULL,
`item` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Table structure for table `items`
--
CREATE TABLE IF NOT EXISTS `items` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`price` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Table structure for table `users`
--
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
[rtl]کدی هم که در پاسخ ارسال شده بود دو غلط تایپی داشت که من اون رو اصلاح کردم و کد صحیح بدین صورته:[/rtl]
CREATE VIEW GiftsList
AS
SELECT b.name user_from,
c.name user_to,
d.name gift_name,
d.price gift_price
FROM gifts a
INNER JOIN users b
ON a.user_from = b.id
INNER JOIN users c
ON a.user_to = c.id
INNER JOIN items d
ON a.item = d.id
[rtl]خب من هم برام سوال بود که این view کجا ذخیره میشه و چطور قابل استفاده، که همونطور که دوستمون اشاره داشتند به شکل بک تیبل در دیتابیس ایجاد میشه که به صورت عادی میشه ازش کوئری گرفت و البته با یک آیکون متفاوت. جالبه!
عکس: 
من در پروژه های قبلیم کوئری هایی نوشتم حدود 60 خط، 5 ساب کوئری، 7 جوین که همه با 5 تیبل در یک کوئری درگیر بودند! که اجرای اون هر بار میتونه صحیح نباشه و فکر میکنم باید اون رو به شکل یک view در بیارم و استفاده کنم.
همچنین من در phpmyadmin سعی کردم یک رکورد از view رو حذف کنم. که اجازه نداد و خطای زیر رو داد:[/rtl]
#1395 - Can not delete from join view 'mysql_view.giftslist'
[rtl]ولی وقتی یک رکورد رو ادیت کردم، علارقم اینکه اخطار زیر رو داد ولی رکورد در view با موفقیت ادیت شد و جالب اینکه رکورد مرتبط در جدول دیگر خودش خودکار به مقدار جدید آپدیت شد![/rtl]
1 row affected.
Note: #1355 View being updated does not have complete key of underlying table in it
[rtl]در نهایت کنجکاوم بفهمم mysql اینکارو چطور و در چه سطحی انجام میده و چقدر انجام اینکار [/font][font="Tahoma"]performance کارو بالا میبره و سرعت اون چقدر تاثیر گذاره.
export یی که phpmyadmin تولید میکنه همچین مثل سایر کوئری های تولید شده نبود و خود این نشون از خاص بودن view داره:[/rtl]
--
-- Structure for view `giftslist`
--
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`127.0.0.1` SQL SECURITY DEFINER VIEW `giftslist` AS select `b`.`name` AS `user_from`,`c`.`name` AS `user_to`,`d`.`name` AS `gift_name`,`d`.`price` AS `gift_price` from (((`gifts` `a` join `users` `b` on((`a`.`user_from` = `b`.`id`))) join `users` `c` on((`a`.`user_to` = `c`.`id`))) join `items` `d` on((`a`.`item` = `d`.`id`)));
[/font]