Передача значения в подзапрос

 
0
 
MySQL
ava
Plavozont | 18.03.2013, 14:09
Здравствуйте, подскажите пожалуйста как сделать запрос, объясню поэтапно:

Этап 1 - работает

SELECT table1.value1 FROM table1


Этап 2 - работает

SELECT (SELECT table1.value1) as value1 FROM table1


Этап 3 - не работает

SELECT (SELECT (SELECT table1.value1 as value1)) as value1 FROM table1


Пытался решить это с помощью переменной:

Этап 1 - работает

SELECT @var1:=table1.value1, (SELECT @var1) as value1 FROM table1


Этап 2 - не работает

SELECT @var1:=table1.value1, (SELECT (SELECT @var1 as value1)) as value1 FROM table1


Т.е. @var1 внутри двойного подзапроса куда-то пропадает, как передать из внешнего запроса во внутренний подзапрос значение если там двойное вложение...


Comments (6)
ava
Akina | 18.03.2013, 13:55 #
Цитата (Plavozont @  18.3.2013,  14:09 findReferencedText)
Этап 3 - не работает


mysql> create table table1(value1 int);
Query OK, 0 rows affected (0.13 sec)

mysql> insert into table1(value1) values (1),(3),(5);
Query OK, 3 rows affected (0.05 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> SELECT table1.value1 FROM table1;
+--------+
| value1 |
+--------+
|      1 |
|      3 |
|      5 |
+--------+
3 rows in set (0.03 sec)

mysql> SELECT (SELECT table1.value1) as value1 FROM table1;
+--------+
| value1 |
+--------+
|      1 |
|      3 |
|      5 |
+--------+
3 rows in set (0.00 sec)

mysql>
mysql>
mysql>  SELECT (SELECT (SELECT table1.value1 as value1)) as value1 FROM table1;
+--------+
| value1 |
+--------+
|      1 |
|      3 |
|      5 |
+--------+
3 rows in set (0.00 sec)

mysql>

Держи руки прямее...
ava
Plavozont | 18.03.2013, 14:30 #
Выпрямляюсь:

Так работает

SELECT
table1.value1
FROM
 (SELECT "1" as value1 UNION SELECT "3" UNION SELECT "5") as table1;


Так работает

SELECT
 (SELECT table1.value1)
FROM
 (SELECT "1" as value1 UNION SELECT "3" UNION SELECT "5") as table1;


А так не работает :(

SELECT
 (SELECT * FROM (SELECT table1.value1 as value1) as table1)
FROM
 (SELECT "1" as value1 UNION SELECT "3" UNION SELECT "5") as table1;


Как передать туда table1.value1, если такой код работает:


SELECT
@t1:=value1, (SELECT @t1) as t1
FROM
 (SELECT "1" as value1 UNION SELECT "3" UNION SELECT "5") as table1;


а такой уже нет :(


SELECT
@t1:=value1, (SELECT * FROM (SELECT @t1 as value1) as table1) as t1
FROM
 (SELECT "1" as value1 UNION SELECT "3" UNION SELECT "5") as table1;
ava
Plavozont | 18.03.2013, 15:56 #
Ну хоть успокоил  smile ...
ava
Akina | 18.03.2013, 18:33 #
Вот оно тебе надо - такой геморрой? типичное много-ко-много, связующая таблица, всё ясно и понятно... 
ava
Plavozont | 18.03.2013, 19:09 #
Приходится, или систему в корне менять или выкрутиться одним выкрутасом и просто чиканить его везде потом... до очередной беды... эх...
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
advanced
Submit