Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: как выбрать в мускуле из массива (типа таплица)
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » как выбрать в мускуле из массива (типа таплица)

Страниц (1): [1]
 

1. DlTA - 08 Июля, 2016 - 12:32:02 - перейти к сообщению
мне нужно для интереса в мускуле выбрать из моего массива
типа:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT *
  2. FROM
  3. (1,2,3,4,5,6,7,8,9, ....)
  4. WHERE
  5. "чета там равно чему то"


как такое вызвать??
2. igosja - 08 Июля, 2016 - 14:24:10 - перейти к сообщению
MySQL работает с MySQL таблицами, выбирать из "типа таплица" он не умеет.
Внесите данные в таблицу, потом выбирайте:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT *
  2. FROM `table`
  3. WHERE `value`='5'; //Цифра 5 взята для примера
3. DlTA - 08 Июля, 2016 - 14:42:55 - перейти к сообщению
igosja пишет:
MySQL работает с MySQL таблицами, выбирать из "типа таплица" он не умеет.

странно
он же может сделать типа
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT *
  2. FROM
  3. ( SELECT * FROM t2 .....) AS st
  4. WHERE st.`id`=123

где по факту таблица "st" генерируется в запросе

а значит можно подать некий внешний массив.
ну я надеюсь.
4. IllusionMH - 08 Июля, 2016 - 16:30:45 - перейти к сообщению
DlTA, а может лучше написать в чем смысл задумки и не придумывать костыли?
5. Мелкий - 08 Июля, 2016 - 23:45:11 - перейти к сообщению
DlTA пишет:
а значит можно подать некий внешний массив.

Нельзя. Ни unnest, ни values ни написать какой-нибудь свой - ну кроме как, наверное возможно, через написание UDF на сях. Даже SQL-хранимку нельзя дёрнуть в from

Всё что можно - сгенерировать гигантский вложенный select 1 union all select 2 ...
6. DlTA - 09 Июля, 2016 - 19:26:11 - перейти к сообщению
вообще косяк с FIELD()
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT *
  2. FROM tab
  3. ORDER BY FIELD(tab.id, 1,2,5,4,3,)


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

но по факту не входящие данные получаются в начале, а надо на оборот.
7. Мелкий - 10 Июля, 2016 - 21:50:44 - перейти к сообщению
order by field(tab.id, 3,4,5,2,1) desc?
order by field(tab.id, 1,2,5,4,3) * -1?
order by tab.id in (1,2,5,4,3), FIELD(tab.id, 1,2,5,4,3)?

field возвращает число. 0 если не было такого в наборе. Соответственно, можно писать любое математическое выражение, которое даст желаемую сортировку.
8. DlTA - 14 Июля, 2016 - 12:36:52 - перейти к сообщению
Мелкий пишет:
order by field(tab.id, 3,4,5,2,1) desc?
order by field(tab.id, 1,2,5,4,3) * -1?
order by tab.id in (1,2,5,4,3), FIELD(tab.id, 1,2,5,4,3)?

field возвращает число. 0 если не было такого в наборе. Соответственно, можно писать любое математическое выражение, которое даст желаемую сортировку.

мда, был не в курсе.
получается прикольно
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT *
  2. FROM  `nalich`
  3. ORDER BY 6 - FIELD(  `nalich`.`id` , 1, 4, 3, 2, 5 )


Мелкий. +

 

Powered by ExBB FM 1.0 RC1