Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
объединение двух таблиц (Sultan) 21/05/2003 - 08:37:49
      Re: объединение двух таблиц (Валентин) 21/05/2003 - 11:06:56
      Re: объединение двух таблиц (Валентин) 21/05/2003 - 11:09:09
      Re: объединение двух таблиц (Sultan) 21/05/2003 - 11:22:37
      Re: объединение двух таблиц (Sultan) 21/05/2003 - 11:28:41
      Re: объединение двух таблиц (Валентин) 21/05/2003 - 11:34:57
      Re: объединение двух таблиц (Валентин) 21/05/2003 - 11:36:16
      Re: объединение двух таблиц (Sultan) 21/05/2003 - 11:49:31

> Original message text:
> From: Sultan - 21/05/2003 - 08:37:49
> Subject:объединение двух таблиц
> -----------------
> Есть таблица in_traff
> ip hour bytes
> 192.168.0.10 1 1
> 192.168.0.11 1 2
>
> И есть таблица out_traff
> ip hour bytes
> 192.168.0.11 1 3
> 192.168.0.12 1 4
>
> Хочу получить такое:
>
> ip hour bytes_in bytes_out
> 192.168.0.10 1 1 0
> 192.168.0.11 1 2 3
> 192.168.0.12 1 0 4
>
> Даже не знаю, как это получить. left join'ом что-то не то получается, а full join/ом совсем нифига.
>
> mysql 4.0.12
>


From: Валентин - 21/05/2003 - 11:06:56
Subject:объединение двух таблиц
-----------------
таблицы такие:
USE `test`;

#
# Structure for table in_traff :
#

CREATE TABLE `in_traff` (
`id` tinyint(4) unsigned NOT NULL auto_increment,
`ip` varchar(15) default NULL,
`hour` tinyint(4) default NULL,
`bytes_in` int(11) default NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`),
KEY `idx_ip` (`ip`)
) TYPE=MyISAM;

#
# Structure for table out_traff :
#

CREATE TABLE `out_traff` (
`id` tinyint(4) unsigned NOT NULL auto_increment,
`ip` varchar(15) default NULL,
`hour` tinyint(4) default NULL,
`bytes_out` int(11) default NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`),
KEY `idx_ip` (`ip`)
) TYPE=MyISAM;

#
# Data for table in_traff (LIMIT 0,500)
#

INSERT INTO `in_traff` (`id`, `ip`, `hour`, `bytes_in`) VALUES
(1,'192.168.0.11',22,4),
(2,'192.168.0.12',2,82);

COMMIT;

#
# Data for table out_traff (LIMIT 0,500)
#

INSERT INTO `out_traff` (`id`, `ip`, `hour`, `bytes_out`) VALUES
(1,'192.168.0.10',1,100),
(2,'192.168.0.11',1,101);

COMMIT;


Запрос такой:
select i.`ip`,(i.`hour`+o.`hour`) as summhours,bytes_in,o.bytes_out
from `in_traff` i
join `out_traff` o on o.`ip`=i.`ip`
group by i.ip
union
select i.`ip`,(i.`hour`) as summhours,bytes_in,'0'
from `in_traff` i
left join `out_traff` o on o.`ip`=i.`ip`
where o.bytes_out is null
union
select o.`ip`,o.`hour` as summhours,'0',o.bytes_out
from `out_traff` o
left join `in_traff` i on i.`ip`=o.`ip`
where bytes_in is null

Результат такой:
ip summhours bytes_in bytes_out
192.168.0.11 23 4 101
192.168.0.12 2 82 0
192.168.0.10 1 0 100

Такой подходит???


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
8645



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |