Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Web > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 15.06.2018, 10:37   #1
Parallelogram
Форумчанин
 
Регистрация: 18.01.2011
Адрес: Живу по адресу: Parallelogram@list.ru
Сообщений: 144
Репутация: 35
По умолчанию Объединить несколько таблиц, несколько столбцов, вывести имя таблиц

Здравствуйте.

Есть таблицы (table_temp, tBLE_input):

TABLE_TEMP
user_id | time | money | do
1 | 06:00 | 10 | 2
2 | 06:10 | 25 | 0
1 | 06:20 | 30 | 0
2 | 06:22 | 10 | 1
1 | 12:50 | 14 | 1


TABLE_INPUT
user_id | time | money
1 | 08:30 | 11
2 | 10:02 | 33
1 | 13:31 | 77


Нужно вывести только для user_id = '1' в обеих таблицах, и do <> '0' в первой таблице, чтобы получилось в худшем случае так:
time | money | do
06:00 | 10 | 2
08:30 | 11 | null
12:50 | 14 | 1
13:31 | 77 | null

А в лучшем случае, так:

time | money | do | table
06:00 | 10 | 2 | temp
08:30 | 11 | null | input
12:50 | 14 | 1 | temp
13:31 | 77 | null | input

До чего я дошел (у меня конечно же не получилось):
Код:

SELECT 
	t.time,
    t.money,
	t.do 
FROM 
	(SELECT * 
     FROM table_temp 
     WHERE do <> '0' 
     AND user_id = '1') AS t 
LEFT JOIN table_input AS i ON t.user_id = i.user_id

И получилось вот что:
time | money | do
06:00 | 10 | 2
12:50 | 14 | 1
06:00 | 10 | 2
12:50 | 14 | 1

И да, я знаю, что нужно использовать UNION, чтобы объединить одинаковые столбцы из разных таблиц в одну. И я предполагаю, что нужно использовать SHOW TABLES, чтобы вывести имя таблиц, или использовать алиас для присвоения нового имени... но я не понимаю как все это сделать и куда подставлять.
Parallelogram вне форума   Ответить с цитированием
Старый 15.06.2018, 10:45   #2
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 23,906
Репутация: 5228
По умолчанию

используйте union all

Код:

select 
   a.time, a.money, a.do, 'temp' as name_table
from TABLE_TEMP as A
where A.user_id  = '1' and a.do<>'0'
union all
 select   b.time, b.money, null as do, 'input' as name_table
 from TABLE_INPUT as B
 where B.user_id  = '1'

Serge_Bliznykov вне форума   Ответить с цитированием
Старый 15.06.2018, 10:50   #3
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 17,683
Репутация: 6211
По умолчанию

Код:

SELECT time,money,do,'temp' AS Table
  FROM TABLE_TEMP
  WHERE user_id = '1' AND do <> '0'
UNION ALL
SELECT time,money,null,'input'
  FROM TABLE_INPUT
  WHERE user_id = '1'
ORDER BY 1

add ой, дубль получился, почти ))
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар на форуме   Ответить с цитированием
Старый 15.06.2018, 11:07   #4
Parallelogram
Форумчанин
 
Регистрация: 18.01.2011
Адрес: Живу по адресу: Parallelogram@list.ru
Сообщений: 144
Репутация: 35
По умолчанию

Спасибо, все получилось. UNION ALL - это то что нужно )
Parallelogram вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос значений таблиц из Excel в несколько таблиц Word средствами VBA apfu00 Microsoft Office Excel 0 19.10.2016 17:51
Несколько таблиц в combobox Maxim5 C# (си шарп) 1 09.04.2016 11:57
Linqdatasource несколько таблиц ZBEP ASP.NET 0 21.05.2014 13:34
Несколько таблиц в Word FearDog Общие вопросы Delphi 1 29.02.2012 21:32
Вставить несколько таблиц lede88 Общие вопросы Delphi 0 07.04.2010 06:52


00:32.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru