SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 03.11.2014 15:56:19

tiger30
Участник
Зарегистрирован: 03.11.2014
Сообщений: 6

mysql вывод данных с одинаковых таблиц.

Добрый день, помогите пожалуйста настроить вывод данных.

Предисловия:
В одной базе имеются четыре таблицы с одинаковой структурой. На данный момент выводится информация с каждой таблицы отдельно в график, но у каждого графика разные значения.
Графики показывают количество соединений по ип адресу. И получается не понятно какое полное количество запросов, так как графики показывают разные значения.

Условия:
Объединить все таблицы в одну.
Тоесть сделать график чтобы он считывал информацию с четырех таблиц.

Это код одного графика:

Код:

<?php 
    for ($x=0; $x<=6; $x++) 
        {
       $m = (date("m", strtotime("-".$x." day")));
       $m2 = (date("Y", strtotime("-".$x." day"))); 
       $m3 = (date("d", strtotime("-".$x." day")));
       $res = mysql_query("SELECT COUNT(DISTINCT (`ip`)) AS `unique` FROM MS01 WHERE timeyear = $m2 and timemonth = $m and timeday = $m3 and type = 'cs'") or die(mysql_error());
       $row = mysql_fetch_row($res);
       $count_uq161[] = $row[0];
    }
    echo "data: [";
    $uq_reverse = array_reverse($count_uq161);
    echo implode(", ",$uq_reverse);
    echo "]";
?>

Как видим он считывает информацию с одной таблицы.

Помогите пожалуйста прописать код, чтобы считывал с четырех таблиц.
Таблицы называются: MS01, MS02, MS03, MS04 Структура одинаковая.

Неактивен

 

#2 03.11.2014 18:09:15

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: mysql вывод данных с одинаковых таблиц.

Попробуйте через union


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 03.11.2014 18:42:37

tiger30
Участник
Зарегистрирован: 03.11.2014
Сообщений: 6

Re: mysql вывод данных с одинаковых таблиц.

deadka написал:

Попробуйте через union

А можна примером?
Как код будет выглядеть.

А то что у меня не получается.

Неактивен

 

#4 03.11.2014 18:47:27

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: mysql вывод данных с одинаковых таблиц.

(SELECT COUNT(DISTINCT (`ip`)) AS `unique` FROM MS01 WHERE timeyear = $m2 and timemonth = $m and timeday = $m3 and type = 'cs'" )

UNION

(SELECT COUNT(DISTINCT (`ip`)) AS `unique` FROM MS02 WHERE timeyear = $m2 and timemonth = $m and timeday = $m3 and type = 'cs'"
)

UNION

(SELECT COUNT(DISTINCT (`ip`)) AS `unique` FROM MS03 WHERE timeyear = $m2 and timemonth = $m and timeday = $m3 and type = 'cs'" )

UNION

(SELECT COUNT(DISTINCT (`ip`)) AS `unique` FROM MS04 WHERE timeyear = $m2 and timemonth = $m and timeday = $m3 and type = 'cs'"
)
 


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#5 03.11.2014 19:09:55

tiger30
Участник
Зарегистрирован: 03.11.2014
Сообщений: 6

Re: mysql вывод данных с одинаковых таблиц.

deadka написал:

(SELECT COUNT(DISTINCT (`ip`)) AS `unique` FROM MS01 WHERE timeyear = $m2 and timemonth = $m and timeday = $m3 and type = 'cs'" )

UNION

(SELECT COUNT(DISTINCT (`ip`)) AS `unique` FROM MS02 WHERE timeyear = $m2 and timemonth = $m and timeday = $m3 and type = 'cs'"
)

UNION

(SELECT COUNT(DISTINCT (`ip`)) AS `unique` FROM MS03 WHERE timeyear = $m2 and timemonth = $m and timeday = $m3 and type = 'cs'" )

UNION

(SELECT COUNT(DISTINCT (`ip`)) AS `unique` FROM MS04 WHERE timeyear = $m2 and timemonth = $m and timeday = $m3 and type = 'cs'"
)
 

График не отображает вообше.

Неактивен

 

#6 03.11.2014 19:13:15

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: mysql вывод данных с одинаковых таблиц.

Что находится в Ваших таблицах я не знаю, да и
телепатия никогда не была моей сильной стороной ( с )

Отделим мух от котлет - сперва покажите, что выбирается в запросе (и Вашем и моем), есть ли данные вообще в результирующей выборке.

Дальше, когда с данными будет порядок - уже разбирайтесь с графиком.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#7 03.11.2014 20:06:14

tiger30
Участник
Зарегистрирован: 03.11.2014
Сообщений: 6

Re: mysql вывод данных с одинаковых таблиц.

Вот как выглядят графики:

График 1
График 2

Файлы графика:
Файлы

Структура таблицы:

Файл
CS

Код:

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `mslog`
-- ----------------------------
DROP TABLE IF EXISTS `mslog`;
CREATE TABLE `mslog` (
  `timeyear` varchar(255) default NULL,
  `timemonth` varchar(255) default NULL,
  `timeday` varchar(255) default NULL,
  `timehour` varchar(255) default NULL,
  `timeminute` varchar(255) default NULL,
  `timesecond` varchar(255) default NULL,
  `ip` varchar(255) default NULL,
  `port` varchar(255) default NULL,
  `type` varchar(255) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of mslog
-- ----------------------------
INSERT INTO `mslog` VALUES ('2013', '01', '17', '11', '04', '30', '62.117.102.157', '51299', 'cs');
INSERT INTO `mslog` VALUES ('2013', '01', '17', '11', '04', '30', '62.117.102.157', '51299', 'cs');
INSERT INTO `mslog` VALUES ('2013', '01', '17', '11', '04', '29', '62.117.102.157', '51299', 'cs');
INSERT INTO `mslog` VALUES ('2013', '01', '17', '11', '04', '29', '62.117.102.157', '51299', 'cs');
INSERT INTO `mslog` VALUES ('2013', '01', '17', '16', '06', '31', '95.128.243.86', '60362', 'cs');
INSERT INTO `mslog` VALUES ('2013', '01', '17', '16', '06', '31', '95.128.243.86', '60362', 'cs');
INSERT INTO `mslog` VALUES ('2013', '01', '17', '16', '06', '35', '95.128.243.86', '60362', 'cs');
INSERT INTO `mslog` VALUES ('2013', '01', '17', '16', '07', '33', '188.127.123.42', '60296', 'cs');
INSERT INTO `mslog` VALUES ('2013', '01', '17', '16', '07', '33', '188.127.123.42', '60296', 'cs');
INSERT INTO `mslog` VALUES ('2013', '01', '17', '16', '07', '44', '95.192.68.200', '17119', 'cs');
INSERT INTO `mslog` VALUES ('2013', '01', '17', '16', '07', '44', '95.192.68.200', '17119', 'cs');
INSERT INTO `mslog` VALUES ('2013', '01', '17', '16', '07', '44', '95.192.68.200', '17119', 'cs');
INSERT INTO `mslog` VALUES ('2013', '01', '17', '16', '07', '44', '95.192.68.200', '17119', 'cs');

Только тыблица называется не "mslog" а "MS01", "MS02", "MS03", "MS04"

Так вот мне нужно чтобы был график не каждой таблицы, а чтобы на графике была одна полоска но чтобы он считывал данные со всех четырех таблиц.

Отредактированно tiger30 (04.11.2014 12:22:48)

Неактивен

 

#8 03.11.2014 20:13:19

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: mysql вывод данных с одинаковых таблиц.

Как я уже писал в предыдущем посте - оставим пока графики, разберемся с данными. Результат моего запроса с точки зрения данных возвращает корректный набор данных или нет? Если нет, то приведите вывод моего запроса и пример того набора, который хотелось бы получить.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#9 03.11.2014 20:24:23

tiger30
Участник
Зарегистрирован: 03.11.2014
Сообщений: 6

Re: mysql вывод данных с одинаковых таблиц.

deadka написал:

Как я уже писал в предыдущем посте - оставим пока графики, разберемся с данными. Результат моего запроса с точки зрения данных возвращает корректный набор данных или нет? Если нет, то приведите вывод моего запроса и пример того набора, который хотелось бы получить.

Я извиняюсь но я нуб в mysql.

Я вписывал как вы говорили, у меня было в место графиков белый экран.
Я вам дал все данные на чем построены графики.
Что мне прописать в index.php, чтобы брались данные с четырех таблиц.


Графике должна быть одна полоска но чтобы считывались данные с четырех таблиц сразу.
Я не знаю как еще объяснить, вроде все четка описал.

Неактивен

 

#10 04.11.2014 04:47:59

tiger30
Участник
Зарегистрирован: 03.11.2014
Сообщений: 6

Re: mysql вывод данных с одинаковых таблиц.

UNION = Не работает перепробывал все.

Другие способы тоже не работаю, возможно из за ява скрипта.

Возникла другая идея, объединить все таблицы в одну.
Тоесть в таблицу MS05 из таблиц MS01, MS02, MS03, MS04, а потом с MS05 выводить график.

Как это сделать напишите пример пожалуйста.

Неактивен

 

#11 04.11.2014 16:47:49

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: mysql вывод данных с одинаковых таблиц.

Проще всего сделать представление

CREATE VIEW MS05 AS SELECT * FROM MS01 UNION ALL SELECT * FROM MS02 UNION ALL SELECT * FROM MS03 UNION ALL SELECT * FROM MS04;

Этот запрос нужно выполнять не в php скрипте, а один раз в клиенте mysql.


Второй вариант - в php скрипте каждый раз создавать временную таблицу
CREATE TEMPORARY TABLE MS05 SELECT * FROM MS01 UNION ALL SELECT * FROM MS02 UNION ALL SELECT * FROM MS03 UNION ALL SELECT * FROM MS04;

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson