







|
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,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
8645
|
|