Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача значения в подзапрос, или хотябы переменной 
:(
    Опции темы
Plavozont
Дата 18.3.2013, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 182
Регистрация: 14.4.2008

Репутация: нет
Всего: нет



Здравствуйте, подскажите пожалуйста как сделать запрос, объясню поэтапно:

Этап 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 внутри двойного подзапроса куда-то пропадает, как передать из внешнего запроса во внутренний подзапрос значение если там двойное вложение...



--------------------
Fortunately, the circumstances under which those words are useful run out at a relatively low level of multiplicity.
PM MAIL   Вверх
Akina
Дата 18.3.2013, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Цитата(Plavozont @  18.3.2013,  14:09 Найти цитируемый пост)
Этап 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>

Держи руки прямее...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Plavozont
Дата 18.3.2013, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 182
Регистрация: 14.4.2008

Репутация: нет
Всего: нет



Выпрямляюсь:

Так работает
Код

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;


Это сообщение отредактировал(а) Plavozont - 18.3.2013, 14:32
--------------------
Fortunately, the circumstances under which those words are useful run out at a relatively low level of multiplicity.
PM MAIL   Вверх
Akina
Дата 18.3.2013, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454





--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Plavozont
Дата 18.3.2013, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 182
Регистрация: 14.4.2008

Репутация: нет
Всего: нет



Это всё моё не здоровое стремление хранить сложные данные в текстовом формате вместо суперреляционного формата...

Я хотел создать текстовое поле содержащее мультиселект из справочника

В текстовое поле пишем 

Код

1|2|3


В справочнике пишем
Код

+--------+--------+
| code   | mame   |
+--------+--------+
|      1 | яблоки |
|      2 | груши  |
|      3 | сливы  |
|      4 | морковь|
+--------+--------+



на выходе хотим получить выбранные в мультиселекте пункты

Код

яблоки
груши
сливы


делается это так

Код

SELECT GROUP_CONCAT(plant_decode SEPARATOR "\n") FROM
(SELECT plants.code, IF(INSTR(CONCAT("|", "1|2|3", "|") , CONCAT("|", plants.code, "|"))>0,plants.name,"") as plant_decode FROM

(SELECT "1" as code, "яблоки" as name
UNION
SELECT "2" as code, "груши" as name
UNION
SELECT "3" as code, "сливы" as name
UNION
SELECT "4" as code, "морковь" as name) as plants

WHERE

IF(INSTR(CONCAT("|", "1|2|3", "|") , CONCAT("|", plants.code, "|"))>0,1,0)<>0) as groupc


но эта штука не втюхивается в запрос :(

весь цивилизованный мир наверное хранит сразу значения без кодов вот так

Код

яблоки|груши|сливы


и не надо ничё перекодировывать...

Это сообщение отредактировал(а) Plavozont - 18.3.2013, 16:17
--------------------
Fortunately, the circumstances under which those words are useful run out at a relatively low level of multiplicity.
PM MAIL   Вверх
Akina
Дата 18.3.2013, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Вот оно тебе надо - такой геморрой? типичное много-ко-много, связующая таблица, всё ясно и понятно... 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Plavozont
Дата 18.3.2013, 19:09 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 182
Регистрация: 14.4.2008

Репутация: нет
Всего: нет



Приходится, или систему в корне менять или выкрутиться одним выкрутасом и просто чиканить его везде потом... до очередной беды... эх...
--------------------
Fortunately, the circumstances under which those words are useful run out at a relatively low level of multiplicity.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.1025 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.