diff --git a/mysql-test/r/derived.result b/mysql-test/r/derived.result
index 5a41a51463eb11c11a00cc295c4e9dc76fab4da1..822993a7bf2e5e632ac24457e41e0f573b50e154 100644
--- a/mysql-test/r/derived.result
+++ b/mysql-test/r/derived.result
@@ -1,4 +1,4 @@
-drop table if exists t1,t2;
+drop table if exists t1,t2,t3;
 CREATE TABLE t1 (a int not null, b char (10) not null);
 insert into t1 values(1,'a'),(2,'b'),(3,'c'),(3,'c');
 CREATE TABLE t2 (a int not null, b char (10) not null);
@@ -7,4 +7,10 @@ select t1.a,t3.y from t1,(select a as y from t2  where b='c') as t3  where t1.a
 a	y
 3	3
 3	3
-drop table if exists  t1.t2;
+CREATE TABLE t3 (a int not null, b char (10) not null);
+insert into t3 values (3,'f'),(4,'y'),(5,'z'),(6,'c');
+select t1.a,t4.y from t1,(select t2.a as y from t2,(select t3.b from t3 where t3.a>3) as t5  where t2.b=t5.b) as t4  where t1.a = t4.y;
+a	y
+3	3
+3	3
+drop table if exists  t1.t2,t3;
diff --git a/mysql-test/t/derived.test b/mysql-test/t/derived.test
index 4a3e8e86d4ab97bc54164aea8e6344336a713cb4..c5f57007e54be03e1a7e2fee3e641830c96ad9bb 100644
--- a/mysql-test/t/derived.test
+++ b/mysql-test/t/derived.test
@@ -1,7 +1,10 @@
-drop table if exists t1,t2;
+drop table if exists t1,t2,t3;
 CREATE TABLE t1 (a int not null, b char (10) not null);
 insert into t1 values(1,'a'),(2,'b'),(3,'c'),(3,'c');
 CREATE TABLE t2 (a int not null, b char (10) not null);
 insert into t2 values (3,'c'),(4,'d'),(5,'f'),(6,'e');
 select t1.a,t3.y from t1,(select a as y from t2  where b='c') as t3  where t1.a = t3.y;
-drop table if exists  t1.t2;
\ No newline at end of file
+CREATE TABLE t3 (a int not null, b char (10) not null);
+insert into t3 values (3,'f'),(4,'y'),(5,'z'),(6,'c');
+select t1.a,t4.y from t1,(select t2.a as y from t2,(select t3.b from t3 where t3.a>3) as t5  where t2.b=t5.b) as t4  where t1.a = t4.y;
+drop table if exists  t1.t2,t3;
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index 6317b21a603eee0c415fb05d4accaec7159168af..24321dbdb53fa4b6bddcae70dc6be793ad79af21 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -2155,8 +2155,10 @@ join_table:
         | '(' SELECT_SYM select_part3 ')' opt_table_alias 
 	{
 	  LEX *lex=Lex;
+	  SELECT_LEX *select_to_execute= lex->select;
 	  lex->select=lex->select->prev;
-	  if (!($$=add_table_to_list(new Table_ident(Lex->last_select),$5,0,TL_UNLOCK)))
+	  if (!($$=add_table_to_list(new Table_ident(select_to_execute),
+	                             $5,0,TL_UNLOCK)))
 	    YYABORT;
 	}