PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Описание: Траблы
Поиск в теме | Версия для печати
span4ez
Отправлено: 08 Июля, 2013 - 18:15:40
Гость
Покинул форум
Сообщений всего: 90
Дата рег-ции: Нояб. 2010
Откуда: Рязань, Россия
Помог: 0 раз(а)
Здравствуйте. Требуется помощь гуру надо составить запрос для двух таблиц
таблица 1:
CODE (
SQL ):
скопировать код в буфер обмена
CREATE TABLE IF NOT EXISTS `type_a` (
`type_zayav` text NOT NULL ,
`adres` text NOT NULL ,
`sostoyanie` text NOT NULL ,
`date` date NOT NULL
) ENGINE= InnoDB DEFAULT CHARSET= utf8;
--
-- Дамп данных таблицы `type_a`
--
INSERT INTO `type_a` ( `type_zayav` , `adres` , `sostoyanie` , `date` ) VALUES
( 'Внутр.Задача' , '43' , 'Назначена' , '2013-07-02' ) ,
( 'Внутр.Задача' , '43' , 'Принята' , '2013-07-03' ) ,
( 'Внутр.Задача' , '43' , 'Завершена' , '2013-07-04' ) ,
( 'Внутр.Задача' , '43' , 'Одобрена' , '2013-07-04' ) ,
( 'Внутр.Задача' , '56' , 'Назначена' , '2013-07-02' ) ,
( 'Внутр.Задача' , '56' , 'Принята' , '2013-07-03' ) ,
( 'Внутр.Задача' , '56' , 'Завершена' , '2013-07-04' ) ,
( 'Внутр.Задача' , '56' , 'Одобрена' , '2013-07-05' ) ;
таблица 2:
CODE (
SQL ):
скопировать код в буфер обмена
CREATE TABLE IF NOT EXISTS `type_b` (
`type_zayav` text NOT NULL ,
`adres` text NOT NULL ,
`sostoyanie` text NOT NULL ,
`date` date NOT NULL
) ENGINE= InnoDB DEFAULT CHARSET= utf8;
--
-- Дамп данных таблицы `type_b`
--
INSERT INTO `type_b` ( `type_zayav` , `adres` , `sostoyanie` , `date` ) VALUES
( 'ЗаявкаИТ' , '18' , 'Назначена' , '2013-07-02' ) ,
( 'ЗаявкаИТ' , '398' , 'Назначена' , '2013-07-04' ) ,
( 'ЗаявкаИТ' , '398' , 'Принята' , '2013-07-04' ) ,
( 'ЗаявкаИТ' , '447' , 'Назначена' , '2013-07-02' ) ,
( 'ЗаявкаИТ' , '474' , 'Назначена' , '2013-07-03' ) ,
( 'ЗаявкаИТ' , '474' , 'Принята' , '2013-07-03' ) ,
( 'ЗаявкаИТ' , '474' , 'Завершена' , '2013-07-04' ) ,
( 'ЗаявкаИТ' , '475' , 'Назначена' , '2013-07-03' ) ,
( 'ЗаявкаИТ' , '475' , 'Принята' , '2013-07-05' ) ,
( 'ЗаявкаИТ' , '475' , 'Завершена' , '2013-07-06' ) ;
Надо чтобы вывод был след образом:
ТипЗаявки Ссылка Назначено_дата Завершена_дата
Внутр.Задача 43 2013-07-02 2013-07-04
Внутр.Задача 56 2013-07-02 2013-07-04
ЗаявкаИТ 18 2013-07-02
ЗаявкаИТ 398 2013-07-04
ЗаявкаИТ 447 2013-07-02
ЗаявкаИТ 474 2013-07-03 2013-07-04
ЗаявкаИТ 475 2013-07-03 2013-07-06
esterio
Отправлено: 08 Июля, 2013 - 18:32:43
Активный участник
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012
Откуда: Украина, Львов
Помог: 127 раз(а)
CODE (
SQL ):
скопировать код в буфер обмена
SELECT `type_zayav` , `adres` , `sostoyanie` , `date` FROM `type_a`
UNION
SELECT `type_zayav` , `adres` , `sostoyanie` , `date` FROM `type_b`
Цитата: _http://sqlfiddle.com/#!2/172a1/1/0
(Отредактировано автором: 08 Июля, 2013 - 18:33:19)
span4ez
Отправлено: 08 Июля, 2013 - 18:50:08
Гость
Покинул форум
Сообщений всего: 90
Дата рег-ции: Нояб. 2010
Откуда: Рязань, Россия
Помог: 0 раз(а)
esterio пишет: CODE (
SQL ):
скопировать код в буфер обмена
SELECT `type_zayav` , `adres` , `sostoyanie` , `date` FROM `type_a`
UNION
SELECT `type_zayav` , `adres` , `sostoyanie` , `date` FROM `type_b`
Цитата: _http://sqlfiddle.com/#!2/172a1/1/0
А как теперь объединить одинаковые поля ссылки по номерам и вывести дату получения и дату завершения в одну таблицу?
Вид таблицы:
|| ТипЗаявки || Ссылка || Назначена_дата || Завершена_дата ||(Отредактировано автором: 08 Июля, 2013 - 18:55:31)
AlexAnder
Отправлено: 08 Июля, 2013 - 19:10:48
Частый посетитель
Покинул форум
Сообщений всего: 915
Дата рег-ции: Авг. 2012
Откуда: Россия
Помог: 34 раз(а)
CODE (
SQL ):
скопировать код в буфер обмена
SELECT `type_zayav` AS `type` , `adres` AS `address` , `date` AS `start` ,
( SELECT `date` FROM `type_a` WHERE `sostoyanie` = 'Завершена' AND `adres` = `address` ) AS `end`
FROM `type_a`
WHERE `sostoyanie` = 'Назначена'
UNION
SELECT `type_zayav` , `adres` AS `address` , `date` ,
( SELECT `date` FROM `type_b` WHERE `sostoyanie` = 'Завершена' AND `adres` = `address` ) AS `end`
FROM `type_b`
WHERE `sostoyanie` = 'Назначена'
Спойлер (Отобразить ) насчёт качества неуверен
Цитата: Требуется помощь гуру
до этого никаких сложных запросов не писал
(Отредактировано автором: 08 Июля, 2013 - 19:23:42)
-----Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©
Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
AlexAnder
Отправлено: 08 Июля, 2013 - 20:09:45
Частый посетитель
Покинул форум
Сообщений всего: 915
Дата рег-ции: Авг. 2012
Откуда: Россия
Помог: 34 раз(а)
LIME
CODE (
SQL ):
скопировать код в буфер обмена
SELECT o. `type_zayav` AS `type` , o. `adres` AS `address` , o. `date` AS `start` , t. `date` AS `end`
FROM `type_a` `o` , `type_a` `t`
WHERE o. `sostoyanie` = 'Назначена' AND t. `sostoyanie` = 'Завершена' AND t. `adres` = o. `adres`
UNION
SELECT o. `type_zayav` AS `type` , o. `adres` AS `address` , o. `date` AS `start` , t. `date` AS `end`
FROM `type_b` `o` , `type_b` `t`
WHERE o. `sostoyanie` = 'Назначена' AND t. `sostoyanie` = 'Завершена' AND t. `adres` = o. `adres`
что-то не могу сообразить что бы и это выводило тоже:
Цитата: ЗаявкаИТ 18 2013-07-02
ЗаявкаИТ 398 2013-07-04
ЗаявкаИТ 447 2013-07-02
тоесть строки\ряды\результат\... которые без даты завершения
(Добавление)
как только уже и не пробовал ...
-----Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©
Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
LIME
Отправлено: 08 Июля, 2013 - 21:20:04
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
CODE (
SQL ):
скопировать код в буфер обмена
SELECT o. `type_zayav` AS `type` , o. `adres` AS `address` , o. `date` AS `start` , t. `date` AS `end`
FROM `type_a` `o`
LEFT JOIN `type_a` `t`
ON t. `adres` = o. `adres` AND t. `sostoyanie` = 'Завершена'
WHERE o. `sostoyanie` = 'Назначена'
если не найдется то будет null присобачен(Отредактировано автором: 08 Июля, 2013 - 21:21:21)
AlexAnder
Отправлено: 08 Июля, 2013 - 21:29:55
Частый посетитель
Покинул форум
Сообщений всего: 915
Дата рег-ции: Авг. 2012
Откуда: Россия
Помог: 34 раз(а)
Цитата: TYPE ADDRESS START END
Внутр.Задача 43 July, 02 2013 00:00:00+0000 July, 04 2013 00:00:00+0000
Внутр.Задача 56 July, 02 2013 00:00:00+0000 July, 04 2013 00:00:00+0000
ЗаявкаИТ 18 July, 02 2013 00:00:00+0000 (null)
ЗаявкаИТ 398 July, 04 2013 00:00:00+0000 (null)
ЗаявкаИТ 447 July, 02 2013 00:00:00+0000 (null)
ЗаявкаИТ 474 July, 03 2013 00:00:00+0000 July, 04 2013 00:00:00+0000
ЗаявкаИТ 475 July, 03 2013 00:00:00+0000 July, 06 2013 00:00:00+0000
TC пишет: Надо чтобы вывод был след образом:
ТипЗаявки Ссылка Назначено_дата Завершена_дата
Внутр.Задача 43 2013-07-02 2013-07-04
Внутр.Задача 56 2013-07-02 2013-07-04
ЗаявкаИТ 18 2013-07-02
ЗаявкаИТ 398 2013-07-04
ЗаявкаИТ 447 2013-07-02
ЗаявкаИТ 474 2013-07-03 2013-07-04
ЗаявкаИТ 475 2013-07-03 2013-07-06
вроде схожи
(Отредактировано автором: 08 Июля, 2013 - 21:38:04)
-----Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©
Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB