Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.
Внимание! Некоторое время письма не доходят до аккаунтов MAIL RU GROUP, не доходят на все почтовые ящики mail.ru, inbox.ru, bk.ru. Пишите им жалобы, чтобы быстрее восстановили получение писем, регистрируйтесь через яндекс почту и gmail, туда письма с активизацией доходят.

Вернуться   Форум программистов > 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
Сообщений: 24,615
Репутация: 5352
По умолчанию

используйте 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
Сообщений: 18,107
Репутация: 6385
По умолчанию

Код:

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


14:08.


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

RusProfile.ru


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