[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Выборка из нескольких таблиц
uMnepaTop
Хелп ми плз, тупому)

Есть 4 таблицы, абсолютно одинаковых (Только ессно в колонках разный текст smile.gif).

Помогите собрать запросик, я ваааще не доганяю как сделать(



Спустя 57 минут, 51 секунда (28.07.2008 - 05:43) Alchemist написал(а):
Уважаемый посетитель !

Мы всегда рады оказать нематериальную помощь советом или примером любому нуждающемуся в таковой.
К сожалению, штатный телепат еще не вышел из запоя по случаю дня сисадмина, так что вам придется самому детально объяснить свою проблему вербально или на письме (предпочтительно), включая сюда:

1) описание начального состояния
2) описание желаемого алгоритма работы
3) описание желаемого результата
4) описание реализации алгоритма (можно кусок (только кусок !!!) кода с комментариями)
5) результат работы алгоритма или сообщение об ошибке
6) кусок (только кусок !!!) кода генерирующий ошибку или предположительно ответственный за неправильный результат

Остаемся с совершеннейшим к вам уважением...

Спустя 2 часа, 47 минут, 50 секунд (28.07.2008 - 08:30) sergeiss написал(а):
Цитата(Alchemist @ 28.7.2008, 6:43) [snapback]44578[/snapback]
...К сожалению, штатный телепат еще не вышел из запоя по случаю дня сисадмина...

Уже, практически, вышел оттуда smile.gif Но писать код тоже не буду, а только подскажу, что UNION очень поможет автору вопроса. А уж как он составит запросы, которые будут объединяться через этот ЮНИОН - это задача для него.

Спустя 2 часа, 5 минут, 36 секунд (28.07.2008 - 10:36) jetistyum написал(а):
Цитата(uMnepaTop @ 28.7.2008, 4:45) [snapback]44577[/snapback]
Хелп ми плз, тупому)

Есть 4 таблицы, абсолютно одинаковых (Только ессно в колонках разный текст smile.gif).

Помогите собрать запросик, я ваааще не доганяю как сделать(


Ну да, там примерно должен быть SELECT ..... ну наверное FROM может быть INNER(LEFT|RIGHT|OUTER) JOIN наверняка должно быть WHERE ну и как вариант UNION .... и ещё может быть LIMIT , ORDER BY, GROUP BY... ну ..это в общих чертах ответ на твой вопрос smile.gif

Спустя 1 час, 5 минут, 1 секунда (28.07.2008 - 11:41) Alchemist написал(а):
Ну если уж на то пошло, то первым шагом должно быть:
"дать в лоб архитектору базы создавшему 4 таблицы, абсолютно одинаковых"...

Спустя 1 день, 26 минут, 49 секунд (29.07.2008 - 12:08) uMnepaTop написал(а):
Цитата(Alchemist @ 28.7.2008, 8:41) [snapback]44597[/snapback]
Ну если уж на то пошло, то первым шагом должно быть:
"дать в лоб архитектору базы создавшему 4 таблицы, абсолютно одинаковых"...

У меня просто "кроном(файлом)" обновляется инфа в БД! И чтобы максиммально быстро обновлялось, пришлось разделить на несколько таблиц.

А с юнионом у меня не получается, уже не первый раз напарываюсь на слияние таблиц) и никогда не получается, т.к примера (Понятного) не видел...

Я прошу только пример с пояснением, что и где, телепаты тут не нужны!

Спустя 5 минут, 9 секунд (29.07.2008 - 12:13) sergeiss написал(а):
Цитата(uMnepaTop @ 29.7.2008, 13:08) [snapback]44676[/snapback]
Цитата(Alchemist @ 28.7.2008, 8:41) [snapback]44597[/snapback]
Ну если уж на то пошло, то первым шагом должно быть:
"дать в лоб архитектору базы создавшему 4 таблицы, абсолютно одинаковых"...

У меня просто "кроном(файлом)" обновляется инфа в БД! И чтобы максиммально быстро обновлялось, пришлось разделить на несколько таблиц.

Тогда, наверное, сначала "дать в лоб архитектору" smile.gif, а потом реструктурировать БД. Я все-таки предлагаю переделать алгоритм.

Спустя 2 минуты, 41 секунда (29.07.2008 - 12:16) uMnepaTop написал(а):
тогда скорость обновления инфы будет ОЧЕНЬ долгая, а мне надо минимум!

Спустя 9 минут, 58 секунд (29.07.2008 - 12:26) sergeiss написал(а):
Почему будет долгая скорость обновления??? Еще даже не было ничего сказано про какой-то определенный алгоритм, а ты уже говоришь, что скорости недостаточно будет.

А вообще, я процитирую Алхемиста, с его милостивого разрешения smile.gif

Предоставь следующее:
1) описание начального состояния
2) описание желаемого алгоритма работы
3) описание желаемого результата
4) описание реализации алгоритма (можно кусок (только кусок !!!) кода с комментариями)

5) От себя добавлю - какая БД? MySQL?

И тогда можно будет более предметно говорить.

Спустя 9 минут, 48 секунд (29.07.2008 - 12:35) Professor написал(а):
Цитата
т.к примера (Понятного) не видел...


Код
SELECT * From `table` WHERE `id`=1
UNION
SELECT * From `table2` WHERE `id`=1

Спустя 25 минут, 27 секунд (29.07.2008 - 13:01) uMnepaTop написал(а):
Цитата(Professor @ 29.7.2008, 9:35) [snapback]44682[/snapback]
Цитата
т.к примера (Понятного) не видел...


Код
SELECT * From `table` WHERE `id`=1
UNION
SELECT * From `table2` WHERE `id`=1


Код
$query = "SELECT * FROM tbl_1 UNION SELECT * FROM tbl_2";
$result = mysql_query($query);

Во, работает! Спасибо Professor, я раньше пробывал, так чета не получалось)

Спустя 2 часа, 1 минута, 57 секунд (29.07.2008 - 15:03) uMnepaTop написал(а):
А как быть с COUNT() ?

Спустя 1 минута, 25 секунд (29.07.2008 - 15:04) uMnepaTop написал(а):
Всякие разные способы перепробывал, не получается.

Вот такой запросик мне надо соеденить:

Код
$count = "SELECT COUNT(tbl_1.id) AS total, SUM(tbl_1.current) AS total1, SUM(tbl_1.max) AS total2 FROM tbl_1";

Спустя 2 часа, 27 минут, 32 секунды (29.07.2008 - 17:32) Alchemist написал(а):
соединяй, кто тебе мешает ?

(запросик1)
UNION
(запросик2)

Спустя 1 час, 18 минут, 51 секунда (29.07.2008 - 18:51) uMnepaTop написал(а):
В том то и дело, не прально)

Он подсчитает таблицу 1, 2 и т.д
И покажет их по отдельности)

Вот как я делал:

Пример:
Код
<?
$count = "SELECT COUNT(tbl_1.id) AS total, SUM(tbl_1.current) AS total1, SUM(tbl_1.max) AS total2 FROM tbl_1
UNION SELECT COUNT(tbl_2.id) AS total, SUM(tbl_2.current) AS total1, SUM(tbl_2.max) AS total2 FROM tbl_2";
$result = mysql_query($query);

while ($row = mysql_fetch_assoc($result)) {
?>
          Total: id = <?=$row['total']?> - current = <?=$row['total1']?> - max = <?=$row['total2']?>";
<?
}
?>


Покажет:

id = 'n' - current = 'n' - max = 'n'
id = 'n' - current = 'n' - max = 'n'

Вот так 2 строчки и покажет по отдельности подсчитанными.
Если без while(), то покажет естессно только первую строчку)

Спустя 3 часа, 36 минут, 26 секунд (29.07.2008 - 22:27) Alchemist написал(а):
Код
SELECT SUM(`total`) AS `total`, SUM(`total1`) AS `total1`, SUM(`total2`) AS `total2`
FROM (
        SELECT COUNT(`id`) AS `total`, SUM(`current`) AS `total1`, SUM(`max`) AS `total2`
        FROM `tbl_1`
    UNION ALL
        SELECT COUNT(`id`) AS `total`, SUM(`current`) AS `total1`, SUM(`max`) AS `total2`
        FROM `tbl_2`
) AS `tmp`
WHERE 1

или

Код
SELECT COUNT(`id`) AS `total`, SUM(`current`) AS `total1`, SUM(`max`) AS `total2`
FROM (
        SELECT `id`, `current`, `max` FROM `tbl_1` WHERE 1
    UNION ALL
        SELECT `id`, `current`, `max` FROM `tbl_1` WHERE 1
) AS `tmp`
WHERE 1

Выбирай...

Спустя 18 минут, 28 секунд (29.07.2008 - 22:46) uMnepaTop написал(а):
1 вариант Работает) Спасибо!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.