Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вопрос по SELECT в INSERT / 25 сообщений из 34, страница 1 из 2
24.09.2014, 10:56:45
    #38755713
asminog72
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SELECT в INSERT
Доброе утро!

Вопрос такой возник. Нужно до вставки данных в одну из таблицу, выбрать эти данные из другой, а именно:
Код: sql
1.
INSERT INTO таблица1(поле1,поле2) ... а здесь что-то типа SELECT поле1 FROM таблица2 WHERE поле2='одно_условие' OR поле2='другое_условие'  



Подскажите, как такой запрос правильно сделать!

Спасибо!
...
Рейтинг: 0 / 0
24.09.2014, 13:14:51
    #38756048
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SELECT в INSERT
http://dev.mysql.com/doc/refman/5.6/en/insert-select.html
У тебя с головкой точно всё нормально?
...
Рейтинг: 0 / 0
24.09.2014, 15:00:14
    #38756251
asminog72
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SELECT в INSERT
Akina У тебя английский, наверное, в одном месте свербит... По русски спрашиваю.
...
Рейтинг: 0 / 0
24.09.2014, 15:24:08
    #38756285
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SELECT в INSERT
asminog72Доброе утро!

Вопрос такой возник. Нужно до вставки данных в одну из таблицу, выбрать эти данные из другой, а именно:
Код: sql
1.
INSERT INTO таблица1(поле1,поле2) ... а здесь что-то типа SELECT поле1 FROM таблица2 WHERE поле2='одно_условие' OR поле2='другое_условие'  



Подскажите, как такой запрос правильно сделать!

Спасибо!

Правильно вот так

Код: sql
1.
2.
INSERT INTO таблица1 (поле1, поле2) 
    SELECT поле1, поле2 FROM таблица2 WHERE поле2 = 'одно_условие' OR поле2 = 'другое_условие'



то есть ничего между ними вставлять больше не требуется, а в подчиненном селекте должно быть ровно столько же полей, сколько вы указываете в скобках

пример

Код: sql
1.
2.
insert into ban (banId, banYype, banTit) 
    select userId, 'user' t, userFio from users where userCDate < 1388534399;
...
Рейтинг: 0 / 0
24.09.2014, 15:50:51
    #38756338
asminog72
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SELECT в INSERT
Спасибо!

Мне нужно в таблицу1 (в одну строку) вставить два значения из одного и того же поля но из разных строк таблицы таблица2.

Чё-то не получается...
...
Рейтинг: 0 / 0
24.09.2014, 16:13:50
    #38756380
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SELECT в INSERT
asminog72Спасибо!

Мне нужно в таблицу1 (в одну строку) вставить два значения из одного и того же поля но из разных строк таблицы таблица2.

Чё-то не получается...

вместо того, чтобы плакать и жаловаться на жизнь лучше попробуйте четко сформулировать новую задачу, создайте под неё отдельную тему и может быть вам кто-нибудь поможет, а лить крокодиловы слезы бесполезно!! да и не по-мужски это...
...
Рейтинг: 0 / 0
24.09.2014, 16:40:24
    #38756411
asminog72
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SELECT в INSERT
Вы ошибаетесь - я не плакаю. Зачем же новую тему-то открывать?..

Задача такова: имеются две таблицы. В одной из них имеются записи, а вторая - пуста.

Нужно: из поля id двух разных записей таблицы, в которой находятся записи, выбрать значения и вставить эти значения (в разных полях) одной записью в пустую таблицу.
...
Рейтинг: 0 / 0
24.09.2014, 16:56:20
    #38756428
asminog72
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SELECT в INSERT
Так как вы посоветовали, что нужно обязательно два поля указывать после SELECT , получилось, но образовались две записи. Мне же нужно чтобы значения попали в одну запись: выбираем два значения из одного и того же столбца но из разных строк одной таблицы, и вставляем их одной записью в другую.
...
Рейтинг: 0 / 0
24.09.2014, 16:58:17
    #38756430
Anatoly B
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SELECT в INSERT
asminog72Вы ошибаетесь - я не плакаю. Зачем же новую тему-то открывать?..

Задача такова: имеются две таблицы. В одной из них имеются записи, а вторая - пуста.

Нужно: из поля id двух разных записей таблицы, в которой находятся записи, выбрать значения и вставить эти значения (в разных полях) одной записью в пустую таблицу.
если я правильно понял задачу, то как вариант можно попробовать:

Код: sql
1.
2.
3.
4.
5.
6.
insert into пустая_таблица (поле1) 
select т1.Поле1 + т2.Поле2
from  таблица1 т1, таблица1 т2
where t1.связующее_поле = t2.связующее_поле and
         t1.поле2 = 'одно_условие' and
         t2.поле2 = 'другое_условие' 
...
Рейтинг: 0 / 0
24.09.2014, 17:19:18
    #38756470
asminog72
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SELECT в INSERT
Спасибо!

Понимаете, структура пустой таблицы такова, что в два различных поля одной её записи нужно поместить соответствующие значения одного и того же поля , но взятые из двух разных записей другой таблицы.

Код: sql
1.
2.
3.
4.
5.
6.
7.
|----------------|                  |-----------------|
|     таб.1          |                  |      таб.2           |
|______________|                  |_______________|
|     1     |         |------------>|      1     |     2   |
|_______|_____ |                   -------------------
|     2     |         |---------------------------^
------------------
...
Рейтинг: 0 / 0
24.09.2014, 17:22:57
    #38756475
asminog72
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SELECT в INSERT
Съехало всё... Если таб.2 выравнять влево, то примерно так:

1----------------1 2
2-------------------^
...
Рейтинг: 0 / 0
24.09.2014, 17:27:01
    #38756484
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SELECT в INSERT
asminog72,

я к сожалению вам помогать не буду, потому что вы относитесь к типу пользователей, которые изначально скрывают часть условий задачи и формулируют задачу в усеченном виде, а после того, как получат решение, то сообщают дополнительные условия задачи, тем самым обесценивая решение, которое было предложено на исходную задачу.

То есть даже если я вам сейчас помогу решить задачу, которую вы сейчас дополнили новыми условиями, то вполне возможна ситуация, что вы и в третий раз введете новые условия с помощью фразы: да, это решение работает, но на самом деле, мне нужно совсем другое...

когда такое происходит, то лично я испытываю очень сильную демотивацию, ну или проще говоря, мне становится больно. Поэтому пусть вам в этой теме помогает кто-нибудь другой.
...
Рейтинг: 0 / 0
24.09.2014, 17:33:37
    #38756490
asminog72
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SELECT в INSERT
Да вы извините, я огорчать вас не хотел! Если б я разбирался в этом, разве бы стал спрашивать?..

Не серчайте - авось, справлюсь!..
...
Рейтинг: 0 / 0
25.09.2014, 05:02:56
    #38756917
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SELECT в INSERT
asminog72 в два различных поля одной её записи нужно поместить соответствующие значения одного и того же поля , но взятые из двух разных записей догадаться, каким образом связаны записи таблиц 1 и 2, предлагаете нам самостоятельно?
...
Рейтинг: 0 / 0
25.09.2014, 07:50:21
    #38756942
asminog72
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SELECT в INSERT
tanglirдогадаться, каким образом связаны записи таблиц 1 и 2, предлагаете нам самостоятельно?

А для чего это вам нужно-то?.. Или из приведенного "рисунка" нельзя сделать вывод о взаимосвязи одной таблицы с другой? Всё что мне нужно - это взять два столбца с одним и тем же названием (из разных строк) из одной и положить их в одну строку в другой таблице, при малом количестве "телодвижений". Это просто задача такая, понимаете?

Я знаю, что можно это сделать несколькими INSERT-ами в сочетании с SELECT-ами. А за один раз никак нельзя?
...
Рейтинг: 0 / 0
25.09.2014, 08:40:47
    #38756974
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SELECT в INSERT
asminog72А для чего это вам нужно-то?Мне это не нужно - это нужно вам, чтобы получить ответ.
asminog72Всё что мне нужно - это взять два столбца с одним и тем же названием ( из разных строк ) из одной и положить их в одну строку в другой таблицеВ том и вопрос - из каких "из разных"? из соседних по какому-то критерию? или можно вообще из случайных?
PS. Таблица 2 изначально пустая, что ли?
...
Рейтинг: 0 / 0
25.09.2014, 08:43:27
    #38756976
Anatoly B
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SELECT в INSERT
asminog72tanglirдогадаться, каким образом связаны записи таблиц 1 и 2, предлагаете нам самостоятельно?

А для чего это вам нужно-то?.. Или из приведенного "рисунка" нельзя сделать вывод о взаимосвязи одной таблицы с другой? Всё что мне нужно - это взять два столбца с одним и тем же названием (из разных строк) из одной и положить их в одну строку в другой таблице, при малом количестве "телодвижений". Это просто задача такая, понимаете?

Я знаю, что можно это сделать несколькими INSERT-ами в сочетании с SELECT-ами. А за один раз никак нельзя?

если Таблица 1 содержит значения:
1
2
3
4

То Таблица 2 какие значения должна содержать?
У меня возникает множество вариантов. Например:
1) 1+2
3+4
2) или
1+4
2+3
3) или
1+2
1+3
1+4
2+1........
Вопрос про связи двух записей весьма важен
...
Рейтинг: 0 / 0
25.09.2014, 09:05:53
    #38756984
Anatoly B
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SELECT в INSERT
asminog72Съехало всё... Если таб.2 выравнять влево, то примерно так:

1----------------1 2
2-------------------^


Код: sql
1.
2.
3.
4.
5.
6.
insert into пустая_таблица (поле1, поле2) 
select т1.Поле1 , т2.Поле2
from  таблица1 т1, таблица1 т2
where t1.связующее_поле = t2.связующее_поле and
         t1.поле2 = 'одно_условие' and
         t2.поле2 = 'другое_условие'.... 



вот это : t1.связующее_поле = t2.связующее_поле
следует определить в зависимости от того какие записи должны связываться. Если все ко всем ( 1+1, 1+2, 1+3, 1+4, 2+1....) то условие можно вообще убрать.
...
Рейтинг: 0 / 0
25.09.2014, 09:09:56
    #38756986
Anatoly B
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SELECT в INSERT
опечаточка:

Код: sql
1.
2.
3.
4.
5.
insert into пустая_таблица (поле1, поле2) 
select т1.Поле1 , т2.Поле1
from  таблица1 т1, таблица1 т2
where t1.связующее_поле = t2.связующее_поле and
         -- t1.полеX = 'одно_условие' and t2.полеX = 'другое_условие'....   <- это опять же от фильтрации данных зависит
...
Рейтинг: 0 / 0
25.09.2014, 09:29:07
    #38757007
asminog72
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SELECT в INSERT
tanglir]В том и вопрос - из каких "из разных"? из соседних по какому-то критерию? или можно вообще из случайных?
PS. Таблица 2 изначально пустая, что ли?

Критерий - просто различные ID. Да, действительно, вторая таблица пустая.
...
Рейтинг: 0 / 0
25.09.2014, 09:40:12
    #38757021
asminog72
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SELECT в INSERT
Anatoly Bвот это : t1.связующее_поле = t2.связующее_поле
следует определить в зависимости от того какие записи должны связываться. Если все ко всем ( 1+1, 1+2, 1+3, 1+4, 2+1....) то условие можно вообще убрать.

Вот смотрите. Имеются два слова в таблице Т1. В дальнейшем мне потребуется связать эти два слова по их ID, и положить их ОДНИМ ЗАПРОСОМ И В ВИДЕ ОДНОЙ ЗАПИСИ в таблицу Т2.

Я не могу сейчас, заранее, предсказать, какие слова нужно будет в дальнейшем связать друг с другом... Для меня на данный момент важно, как правильно сформировать запрос чтобы в таблицу Т2 попала одна запись, а не две и более.

Всем спасибо за ответы!
...
Рейтинг: 0 / 0
25.09.2014, 10:24:28
    #38757079
asminog72
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SELECT в INSERT
asminog72
... В дальнейшем мне потребуется связать эти два слова по их ID, и положить их в определённом порядке ...
...
Рейтинг: 0 / 0
25.09.2014, 10:39:22
    #38757109
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SELECT в INSERT
asminog72,

то есть вы не знаете (не говорите) ни связи, ни порядка, но хотите получить запрос?
ну в принципе Анатолий его привёл - в общем виде, так сказать
а конкретней, не зная условия, и не получится
...
Рейтинг: 0 / 0
25.09.2014, 11:16:59
    #38757172
asminog72
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SELECT в INSERT
tanglirasminog72,

то есть вы не знаете (не говорите) ни связи, ни порядка, но хотите получить запрос?
ну в принципе Анатолий его привёл - в общем виде, так сказать
а конкретней, не зная условия, и не получится

Я не знаю, как Вам ещё объяснить... Основная цель: По А и Б из одной таблицы взять их ID , связать в определённом порядке (т. е., либо сначала ID А а за ним ID Б , либо наоборот), и разместить в виде записи в другой таблице. Роли не играет, что прежде - ID А или наоборот. Может быть и так и эдак.

Почему не получится-то?.. Сейчас-то я могу, например, занести INSERT-ом запись в пустую таблицу, но только ОДНОГО ID за запрос, а не сразу двух, как нужно. Поэтому приходится использовать UPDATE для внесения второго ID в ту запись, которая образовалась.

Получается, что невозможно с помощью INSERT ... SELECT образовать из 2 столбцов одного типа, ОДНУ запись?.. То есть, из "вертикали" получить "горизонталь" одним запросом INSERT ... SELECT?
...
Рейтинг: 0 / 0
25.09.2014, 11:40:56
    #38757217
asminog72
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SELECT в INSERT
В общем, эту проблему решил. Вот, может быть кому-нибудь пригодится:

Код: sql
1.
2.
3.
$sql="INSERT IGNORE INTO таблица2(index_А, index_Б) 
                                  VALUES((SELECT А_id FROM таблица1 WHERE char='А'),
		                             (SELECT Б_id FROM таблица1 WHERE char='Б'))";
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вопрос по SELECT в INSERT / 25 сообщений из 34, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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