Как и чем можно заменить UNION ?

neko

tеam neko
Originally posted by Profic
Ведь по идее при наличии этой таблицы весь запрос должен игнорироваться :)
зависит от того что MySQL считает запросом.

я этого незнаю, если кто-то объяснит буду рад

по мне так, их (запроса) тут 2
 

Profic

just Profic (PHP5 BetaTeam)
neko
по идее там вообще 3 ОПЕРАЦИИ :)
1) show create table (или как-то так)
2) create table
3) insert
НО, запрос всё-же один :)
В общем непонятно :)
 

Profic

just Profic (PHP5 BetaTeam)
neko
>это на основании чего такой вывод?
на том основании, что в mysql_query можно запихнуть только один запрос :)

Честно мне все-равно как оно там внутри работает :) Если тебе нет - то попинай Апельсинку :)
 

.des.

Поставил пиво кому надо ;-)
Автор оригинала: bovkun
Народ, подскажите, плиз.

Как и чем можно заменить UNION ?
Если совсем извращаться без union и временных таблиц, то необходимо создать одну постоянную таблицу для реализации union через left join
Cоздаешь вспомогательную таблицу union_table состоящую из одного поля - и заполняешь ее значениями (количество записей равно максимальному количеству таблиц в будущих объединениях)
Код:
mysql> SELECT * FROM union_table;
+----+
| id |
+----+
|  0 |
|  1 |
|  2 |
....

|  N |
+----+
N rows in set (0.01 sec)
Далее пишем запрос - изврат еще тот :)

Код:
[COLOR=darkblue][b]SELECT[/b][/COLOR]
  CASE 0 
    WHEN ISNULL(t1.field1) THEN t1.field1
    WHEN ISNULL(t2.field1) THEN t2.field1
    ...
    WHEN ISNULL(tN.field1) THEN tN.field1
  END 
  AS field1,
  .....
  CASE 0 
    WHEN ISNULL(t1.fieldN) THEN t1.fieldN
    WHEN ISNULL(t2.fieldN) THEN t2.fieldN
    ...
    WHEN ISNULL(tN.fieldN) THEN tN.fieldN
  END 
  AS fieldN
[COLOR=darkblue][b]FROM[/b][/COLOR]
  union_table 
    LEFT JOIN table1 AS t1 ON 
      union_table.id=0 AND [..нужное условие..]
    ...
    LEFT JOIN tableN AS tN ON 
      union_table.id=N AND [..нужное условие..]

[COLOR=darkblue][b]WHERE[/b][/COLOR]
  union_table.id IN (0,...,N)

[COLOR=coral]# IN() можно заменить на union_table.id  <= N[/COLOR]
 

.des.

Поставил пиво кому надо ;-)
Автор оригинала: .des.
далее пишем запрос - изврат еще тот
Автор оригинала: si
.des.
зачем городить такую чушь ?
Если взглянуть на время поста и учесть, что я еще не ложился спать, то у чуши появляется логическое обоснование.
Кроме того, я разве где то утверждал, что у этого есть какой либо смысл?
:)
Я вообще противник старых версий.. :) и от хостера с 3.23.хх убежал бы как от огня.

Кроме того это не полная замена union.

Справедливости ради надо отметить, что кроме длины записи и лишней таблицы у этого метода не так много недостатков и на многих выборках он скорее всего будет показывать результаты гораздо лучше, чем временная таблица. (не факт надо тестить)

да и вообще пища для размышлений :)
 
Сверху