Этот сайт не наркоманов. Это сайт программистов.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Пыха переехала на новый сервер, ура!

Краснодарское время: 09 Февраль, 2012, 08:01:03

Страниц: [1]
Печать
Автор Тема: [MySQL] вернуть имя таблицы многих UNION  (Прочитано 411 раз)
0 Пользователей и 1 Гость смотрят эту тему.
chestor    ↓ 
31 Август, 2010, 04:04:30
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 6
Сила слова: 0

Пыривет.
Есть тема:
У пользователя есть некое количество таблиц (от 0 до 999). Есть одна таблица типа "номенклатуры". Схождением таблиц является "items.item_1c_code" (эт которая одна) и "00000009_N000000001.id" (эт которые пользовательские).
 
Мне нужно выбрать совпадения строк с "номенклатурой" из каждой таблицы пользователя. (строка короткая, 4-8 символов и то цифры).
 
Делаю так:
PHP

    public function rsrvs_string_search ( $args=array() ) {
        // создание запроса для каждой таблицы
        $query = '';
        $rsrvs_count = count($args['rsrvs']);
        $i=0;
        foreach ($args['rsrvs'] as $rsrv_table) {
            ++$i;
            $query .= "
                SELECT
                    "
.$rsrv_table.".*,
                    items.*
                FROM
                    "
.$rsrv_table."
                    LEFT JOIN items ON id=items.item_1c_code
                WHERE
                    "
.$rsrv_table.".id='".$args['item_1c_code']."'
            "
;
 
            if ($i < $rsrvs_count) $query .= " UNION ";
        }
       
        $this->query=$query;
        return $this->make_select_query();
    }
 

Запрос получается таким
SQL

SELECT
    00000009_N000000001.*,
    items.*
FROM
    00000009_N000000001
LEFT JOIN items ON id=items.item_1c_code
WHERE
    00000009_N000000001.id='01234567'
 
UNION
 
SELECT
    00000009_N000000002.*,
    items.*
FROM
    00000009_N000000002
    LEFT JOIN items ON id=items.item_1c_code
WHERE
    00000009_N000000002.id='01234567'
 
UNION ....
 

результат такой:
HTML

Array
(
    [0] => Array
        (
            [id] => 01234567
            [count] => 5
            [sold] => 0
            [count_old] => 5
            [item_id] => 12801
            [item_1c_code] => 01234567
            [item_...] => ...
        )
    [n] => Array
        (
            ....
        )
 
)
 

Собственно, вопрос: как вернуть для каждой строки имя таблицы? То есть, как вернуть в селекте название таблицы? Неужели только SHOW STATUS TABLE копать... ?
 
Или, если кг/ам, то как бы Вы искали значение из одной таблицы во многих других?
 
----
PS кстати, поиск тут не абонент
Записан
ivanscm    ↓ 
31 Август, 2010, 04:23:00 , спустя 18 минут 30 секунд
НЕ ХУЕТА! ХУЕТА!

Синий властилин
Группа: Джедаи

Карма: 9
Сообщений: 1049
Сила слова: 0.86

креатиф гавно, афтар мудаг :))))))
Записан


На этом форуме я должен 5 бачей МД5 и 500 рур Кафе.
ПЫХА Я ТЕБЯ ЛЮБЛЮ!
chestor    ↓ 
31 Август, 2010, 04:24:08 , спустя 1 минуту 8 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 6
Сила слова: 0

ivanscm, просил же))
Записан
phpdude    ↓ 
31 Август, 2010, 04:26:52 , спустя 2 минуты 44 секунды
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 339
Сообщений: д-о-х-у-я!
Сила слова: 1.72

ебал я в рот ваш 1с .... чувак, увольняйся пока не поздно, так бд только ебланы юзают :D
Спустя 1 минуту 26 секунд добавил
помогу, похуй.
 
SQL
SELECT
    '00000009_N000000001',
    00000009_N000000001.*,
    items.*
FROM
    00000009_N000000001
LEFT JOIN items ON id=items.item_1c_code
WHERE
    00000009_N000000001.id='01234567'
 
UNION
 
SELECT
    '00000009_N000000002',
    00000009_N000000002.*,
    items.*
FROM
    00000009_N000000002
    LEFT JOIN items ON id=items.item_1c_code
WHERE
    00000009_N000000002.id='01234567'
 
UNION ....

кто не понял, я не виноватая
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
chestor    ↓ 
31 Август, 2010, 04:27:35 , спустя 43 секунды
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 6
Сила слова: 0

phpdude, эт я в курсе, больше все же интересует, каким же способом искать 1 во многих... )) на производительность пока что пох)
Спустя 28 секунд добавил
phpdude, ай пля, не догадался, спс)
Записан
AlexB    ↓ 
31 Август, 2010, 04:28:21 , спустя 46 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: в ухо

Карма: 88
Сообщений: 3280
Сила слова: 2.68

Дык просто в селекте напиши это имя:
 
SELECT 'table1', * FROM table1 UNION SELECT 'table2', * FROM table2
Записан

phpdude    ↓ 
31 Август, 2010, 04:29:46 , спустя 1 минуту 25 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 339
Сообщений: д-о-х-у-я!
Сила слова: 1.72

на производительность пока что пох)
стопудово, ты же уже юзаешь 1с :D
Спустя 11 секунд добавил
1с.* - Гавно
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
AlexB    ↓ 
31 Август, 2010, 04:29:56 , спустя 10 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: в ухо

Карма: 88
Сообщений: 3280
Сила слова: 2.68

о бля, опоздал
Записан

phpdude    ↓ 
31 Август, 2010, 04:31:34 , спустя 1 минуту 38 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 339
Сообщений: д-о-х-у-я!
Сила слова: 1.72


о бля, опоздал
иа скорострел!)))))
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
ivanscm    ↓ 
31 Август, 2010, 04:34:17 , спустя 2 минуты 43 секунды
НЕ ХУЕТА! ХУЕТА!

Синий властилин
Группа: Джедаи

Карма: 9
Сообщений: 1049
Сила слова: 0.86

дуд: жубла, 1с - говно. а че реально бикрикс говно, я еще не юзал
Записан


На этом форуме я должен 5 бачей МД5 и 500 рур Кафе.
ПЫХА Я ТЕБЯ ЛЮБЛЮ!
phpdude    ↓ 
31 Август, 2010, 04:35:46 , спустя 1 минуту 29 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 339
Сообщений: д-о-х-у-я!
Сила слова: 1.72

ivanscm, не юзай системы для проклятых
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
chestor    ↓ 
31 Август, 2010, 04:42:36 , спустя 6 минут 50 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 6
Сила слова: 0

phpdude
стопудово, ты же уже юзаешь 1с :D

1с-то да, юзаю, но не битрикс)) Из 1с выгрузки тока, интеграция, мля)) А на производительность пока что пох ибо не более 10 человек одновременно будут этой фигней страдать.
 
С битриксом бы давно послал всех в кусофт)).
 
По теме-то, один фиг, как оптимально искать var в n таблицах??
Записан
phpdude    ↓ 
31 Август, 2010, 04:43:46 , спустя 1 минуту 10 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 339
Сообщений: д-о-х-у-я!
Сила слова: 1.72

По теме-то, один фиг, как оптимально искать var в n таблицах??
по теме - надо тебе про нормализацию баз почитать и не ебать себе хуй ноздрями.
Спустя 18 секунд добавил
в одну сливай это все гавно, расставляй индексы и ищи по людски а не блюдски
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
chestor    ↓ 
31 Август, 2010, 04:48:44 , спустя 4 минуты 58 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 6
Сила слова: 0

phpdude, да, думал уже, да система в работе - докуя чего переписывать надо.. )))
Записан
Sinkler    ↓ 
31 Август, 2010, 08:33:26 , спустя 3 часа 44 минуты 42 секунды
НЕ ХУЕТА! ХУЕТА!

Похуй, пляшем!
Группа: Джедаи

Карма: 60
Сообщений: 6091
Сила слова: 0.99

PS кстати, поиск тут не абонент
знаем
Записан

Страниц: [1]
Печать
 

Перейти в: