SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 22.08.2009 02:37:50

DJK
Завсегдатай
Зарегистрирован: 09.08.2009
Сообщений: 32

Запрос на одновременную выборку данных

есть таблички

CREATE TABLE `test3` (
  `id_test3` int(11) NOT NULL AUTO_INCREMENT,
  `id_test1` int(11) DEFAULT NULL,
  `id_p` int(11) DEFAULT NULL,
  `mn` int(11) DEFAULT NULL,
  PRIMARY KEY (`id_test3`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

CREATE TABLE `test2` (
  `id_test2` int(11) NOT NULL AUTO_INCREMENT,
  `id_test1` int(11) DEFAULT NULL,
  `id_p` int(11) DEFAULT NULL,
  `mr` int(11) DEFAULT NULL,
  PRIMARY KEY (`id_test2`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

CREATE TABLE `test1` (
  `id_test1` int(11) NOT NULL AUTO_INCREMENT,
  `name` int(11) DEFAULT NULL,
  PRIMARY KEY (`id_test1`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

test1 не будем рассмаотривать

INSERT INTO `test2` (`id_p`,`mn`,`id_test1`) VALUES (1,2,1);
INSERT INTO `test2` (`id_p`,`mn`,`id_test1`) VALUES (2,7,1);
INSERT INTO `test2` (`id_p`,`mn`,`id_test1`) VALUES (3,7,1);
INSERT INTO `test3` (`id_p`,`mr`,`id_test1`) VALUES (1,39,1);
INSERT INTO `test3` (`id_p`,`mr`,`id_test1`) VALUES (4,76,1);
INSERT INTO `test2` (`id_p`,`mn`,`id_test1`) VALUES (7,134,6);

в итоге нужно получить следующее
============================================
| id_p | id_test2 |   mn | id_test3 |  mr  |
--------------------------------------------
|   1  |     1    |   2  |     1    |  39  |
--------------------------------------------
|   2  |     2    |   7  |   null   | null |
--------------------------------------------
|   3  |     3    |   7  |   null   | null |
--------------------------------------------
|   4  |   null   | null |     4    |  76  |

поля test2.id_test1=test3.id_test1
test1.id_test1 равен некоторому значению, например 1
сортировка результата по полю id_p.
группировка не нужна, все поля в единственном экземпляре.

Отредактированно DJK (22.08.2009 02:52:27)

Неактивен

 

#2 22.08.2009 02:58:01

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

Re: Запрос на одновременную выборку данных

Если я правильно вас понял, то

select * from
(select t2.id_p, mn, mr from test2 t2 left join test3 using(id_p) where t2.id_test1=1
union
select t3.id_p, mn, mr from test3 t3 left join test2 using(id_p) where t3.id_test1=1) x
order by 1;

Неактивен

 

#3 22.08.2009 12:53:51

DJK
Завсегдатай
Зарегистрирован: 09.08.2009
Сообщений: 32

Re: Запрос на одновременную выборку данных

vasya
превосходно, спасибо.

Неактивен

 

Board footer

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