#php #mysql
#php #mysql
Вопрос:
У меня возникли проблемы с пониманием того, как написать этот запрос MySQL, и многие ответы, которые я смог найти здесь, похоже, не очень помогают.
У меня есть две таблицы с этими строками:
units
-----------------
unit_id (INT)
unit_name(STRING)
surveys
-----------------
survey_id (INT)
parent_unit(INT)
Я пытаюсь добавить запись в таблицу опросов. В моем запросе я знаю unit_name
of parent_unit
, но мне нужно выяснить, что это unit_id
такое.
Я давно не работал с mysql, поэтому у меня возникли проблемы с созданием внутреннего СОЕДИНЕНИЯ, которое заменило бы unit_name
соответствующее unit_id
.
Это то, что я пробовал до сих пор, но я думаю, что я очень далек от ответа:
$unit_name = "unit1"
INSERT INTO surveys (parent_unit)
SELECT * FROM units
INNER JOIN units ON $unit_name=units.unit_name
VALUES ("unit name") //This should be an INT
Результатом этого запроса будет:
survey_id | parent_unit
---------- ------------
0 | 0
Поскольку unid_id
для родительской единицы «unit1» равно 0, что мы можем видеть в таблице единиц измерения:
> SELECT * FROM units WHERE unit_name LIKE "unit1";
unit_id | unit_name
-------- ----------
0 | unit1
Надеюсь, я объяснил себя достаточно, чтобы меня поняли.
Комментарии:
1. обновите свой вопрос, добавьте надлежащий образец данных и ожидаемый результат
Ответ №1:
Итак, начните с простого. Во-первых, каков запрос для поиска идентификатора модуля по имени модуля в units? В качестве элементарного запроса:
SELECT unit_id
FROM units
WHERE unit_name LIKE "the_unit_name_you_have"
Итак, затем мы посмотрим, что вы на самом деле хотите сделать: вам нужно создать запись опроса, и у вас есть имя объекта. Вместо того, чтобы выполнять полное объединение таблицы для каждого возможного элемента, давайте просто повторим этот точный выбор и просто поместим его в таблицу:
INSERT INTO surveys (parent_unit)
SELECT unit_id AS parent_unit
FROM units
WHERE unit_name LIKE "the_unit_name_you_have"
(Также обратите внимание, что это AS
совершенно необязательно, но может упростить отслеживание для человека)
Комментарии:
1. Нужно ли мне также указывать ЗНАЧЕНИЯ, которые я затем хочу добавить?
2. Но это не то, что вы показываете, поэтому, если у вас другой вопрос, вам следует обновить свой пост, чтобы рассказать о том, что именно вы пытаетесь сделать, а не о чем-то подобном или достаточно близком к этому. В заданном вами вопросе вы вставляете только одно значение для одного столбца:
parent_unit
.
Ответ №2:
Судя по вашему объяснению, вам, похоже, нужно
объединение между ‘unit name’ из units и parent_id из сеансов на основе отношения между unit_id и parent_id
INSERT INTO surveys (parent_unit)
SELECT unit_id
FROM units u
INNER JOIN surveys s ON u.unit_name = 'unit name'
and u.id = s.parent_unit