Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MYSQL:INSERT INTO,同时在同一查询中执行内部联接_Php_Mysql - Fatal编程技术网

Php MYSQL:INSERT INTO,同时在同一查询中执行内部联接

Php MYSQL:INSERT INTO,同时在同一查询中执行内部联接,php,mysql,Php,Mysql,我很难理解如何编写这个MySQL查询,而我在这里找到的许多答案似乎并没有多大帮助 我有两个具有以下行的表: units ----------------- unit_id (INT) unit_name(STRING) surveys ----------------- survey_id (INT) parent_unit(INT) 我正在尝试向调查表中添加一条记录。在我的查询中,我知道父单元的单元名称,但我需要找出单元id是什么 我已经有一段时间没有使用mysql了,所以我很难创建一个内

我很难理解如何编写这个MySQL查询,而我在这里找到的许多答案似乎并没有多大帮助

我有两个具有以下行的表:

units
-----------------
unit_id (INT)
unit_name(STRING)

surveys
-----------------
survey_id (INT)
parent_unit(INT)
我正在尝试向调查表中添加一条记录。在我的查询中,我知道
父单元的
单元名称
,但我需要找出
单元id
是什么

我已经有一段时间没有使用mysql了,所以我很难创建一个内部连接,用相应的
unit\u id
替换
unit\u name

这是我迄今为止所尝试的,但我认为我离答案还很远:

$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
由于`父单元“unit1”的
unid\u id
为0,我们可以在单位表中看到:

> SELECT * FROM units WHERE unit_name LIKE "unit1";

unit_id | unit_name
--------+----------
      0 |     unit1

我希望我的解释足够让人理解。

所以从更简单的开始。首先,从units中查找给定单元名称的单元id的查询是什么?作为基本查询:

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"

(还请注意,
作为
是完全可选的,但可以使事情作为人类更容易跟踪)

根据您的解释,您似乎需要
基于单元id和父id之间的关系,单元中的“单元名称”与会话中的父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

更新你的问题添加适当的数据样本和预期结果我还需要指定我想要添加的值吗?但这不是你要显示的,所以如果你有不同的问题,你应该更新你的帖子,确切地谈论你正在尝试做什么,而不是类似的事情,或者足够接近它。在您要问的问题中,您只为一列插入一个值:
parent\u unit