powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / как одну запись вывести в 2 строки
8 сообщений из 8, страница 1 из 1
как одну запись вывести в 2 строки
    #38393074
motorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день

Подскажите пожалуйста

у меня есть таблица , в ней есть поля дата подачи вагона, номер вагона и т.д.
и есть поля дата уборки вагона, номер вагона и т.д.
если поле sost=1 значит вагон убран и поля уборки заполнены

у меня задача сделать select чтобы
выводились данные по вагону
если sost=1 чтобы выводилось в 2 строки
в виде

номер вагона | дата подачи | дата уборки | диспетчер | номер документа
33333 23.09.13 Антонов подача 12323 23.09.13
33333 25.09.13 Михайлов уборка 123123 25.09.13


таблица вагонов с подачей уборкой services_vagon
документ подача/уборка services где есть перечислены вагоны

в services_vagon для документа подачи поле id_services
для документа уборки id_services_uborka

скажите как можно это сделать
и вообще , правильная ли такая структура таблицы?
...
Рейтинг: 0 / 0
как одну запись вывести в 2 строки
    #38393077
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
motorov,

проведите конкретный пример исходных данных и желаемый результат.
не стесняйтесь пользоватся тагами CSV или FIX.

Вообше удвоить строчки легко путем жоинта на таблицу с двумя записями

select tbl.*
from tbl,
(select 1 a union select 2) zz

затем с помошью ИФ-ов и КАСЕ-ов выбирать нужные поля.
А можно и на клиенте показывать в две строчки

Конкретный анализ структуры трудно сделать ибо
мало информации какие основные задачи таблиц.
Иногда полезно чтобы каждое действие было в отдельной строчке,
иногда полезно чтоб много данных в одной строчке.
...
Рейтинг: 0 / 0
как одну запись вывести в 2 строки
    #38393078
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
motorovв виде

номер вагона | дата подачи | дата уборки | диспетчер | номер документа
33333 23.09.13 Антонов подача 12323 23.09.13
33333 25.09.13 Михайлов уборка 123123 25.09.13use [ csv ], Luke!
номер вагона дата подачи дата уборки диспетчер номер документа33333 23.09.13 Антонов подача 12323 23.09.1333333 25.09.13 Михайлов уборка 123123 25.09.13

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select 
t.number
,case when t.sost=0 or t.sost=1 and zz.q=1 then t.dt else null end as d1
,case when t.sost=1 and zz.q=2 then t.dt else null end as d2
-- хм, а для диспетчеров там тоже 2 поля, что ли? ну тогда
,case when t.sost=1 and zz.q=2 then t.disp2 else t.disp1 end as disp
-- и для документов? тогда см.выше
from services_vagon t
cross join (select 1 q union all select 2) zz
where t.sost=1 or t.sost=0 and zz.q=1
order by t.number,zz.q
...
Рейтинг: 0 / 0
как одну запись вывести в 2 строки
    #38393875
motorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо за советы
буду обязательно сообщения форматировать

воспользовался вашим запросом
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select 
t.nomer_vagona
,case when t.sost=0 or t.sost=1 and zz.q=1 then t.dt_doc else null end as d1
,case when t.sost=1 and zz.q=2 then t.date_d_uborka else null end as d2
-- хм, а для диспетчеров там тоже 2 поля, что ли? ну тогда
,case when t.sost=1 and zz.q=2 then (select e1.name from services s1 left join employee e1 on s1.id_manager=e1.id where s1.id=t.id_services ) 
else (select e1.name from services s1 left join employee e1 on s1.id_manager=e1.id where s1.id=t.id_services_uborka ) end as disp
-- и для документов? тогда см.выше
from services_vagon t
cross join (select 1 q union all select 2) zz
where t.sost=1 or t.sost=0 and zz.q=1 
order by t.nomer_vagona,zz.q




мне не понятна тут вот эта часть
Код: sql
1.
 (select 1 q union all select 2) zz


и как вывести по одному вагону данные ?
...
Рейтинг: 0 / 0
как одну запись вывести в 2 строки
    #38393945
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
motorovмне не понятна тут вот эта частьэта часть делает из одной записи две
...
Рейтинг: 0 / 0
как одну запись вывести в 2 строки
    #38393962
motorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

ну да , но как , я не понял, простите за дилетантство
1 и 2 что это?
...
Рейтинг: 0 / 0
как одну запись вывести в 2 строки
    #38394084
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
motorov,

да хоть что
это просто временная таблица с двумя записями - в одной число 1, во второй число 2

motorovну да , но как , я не понялчитайте про cross join - поймёте

а логика такая:
если "сост"=1, то это убытие, и нам из него надо получить 2 записи:
"первая" - прибытие (t.sost=1 and zz.q=1 в первом case)
"вторая" - убытие (t.sost=1 and zz.q=2 во втором case)
но если "сост"=0, то это только прибытие, и нам нужна только одна запись - о прибытии (К.О.)
поэтому для "сост"=0 оставляем только "первые" записи, для этого в секции "wgere" убираем записи с "сост"=0 и zz.q=2
а само условие - "t.sost=0" в первом case
короче, покрутите запрос, почитайте доки
а может, тут кто-нибудь доходчивей объяснит...

motorovи как вывести по одному вагону данные ?ну добавьте в where ещё условие на вагон... только не забывайте про приоритеты операторов
...
Рейтинг: 0 / 0
как одну запись вывести в 2 строки
    #38398269
motorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо за помощь
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / как одну запись вывести в 2 строки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]