Как правильно составить SQL запрос (поиск по таблицам)?
Есть несколько таблиц в одной базе
number_owner
id, number_table_id, contragents_id
number_table
id, number ....
contragents
id, inn ....
в number_table и contragents есть данные. number_owner типа связывает эти две таблицы в базе. какой sql запрос должен быть, когда у меня есть отдельный файл csv в котором есть столбцы:
inn, number
Т.е. мне в итоге нужно сделать insert в таблицу number_owner, но при этом с указанием number_table_id, contragents_id, где contragents_id берется из поля inn, а number_table_id соответственно из number
вроде разобрался insert into number_owner (number_table_id, contragents_id) values ((select id from number_table where number=number ), (select id from contragents where inn=inn)) но теперь Error Code: 1048. Column 'contragents_id' cannot be null. Потому что инн нет в таблице contragents. Надо скрипт писать или можно все-таки sql запросом? )
Если я Вас правильно понял - у вас уже есть некие списки number в таблице number_table, inn в таблице contragents и есть отдельный список записей в csv которые нужно нормализовать.
IMHO самое простое и правильное решение - написать на любом ЯП маленький скриптик.
В зависимости от количества данных в существующих таблицах, можно как их честно дергать каждый раз, так и загрузить в память.
1) надо сделать SELECT во временную таблицу содержимого csv
2) А потом что-то вроде
INSERT INTO number_owner(number_table_id,contragent_id)
SELECT nt.id, c.id FROM @tempTable as t
INNER JOIN contragents as c ON t.inn = c.inn
INNER JOIN number_table as nt ON t. number = nt.number
Ринат Бакиев: Для этого делается INNER JOIN. Да и вообще перед тем как инсертить такой SELECT - его можно просто пару раз запустить чтобы проверить корректность выдачи.
Мне кажется, но я возможно не так объяснил что хочу. insert into number_owner (number_table_id, contragents_id) values ((select id from number_table where number=number ), (select id from contragents where inn=inn))