Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.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 尝试从表B中选择与表A中最近添加的记录同名的所有记录_Php_Mysql - Fatal编程技术网

Php 尝试从表B中选择与表A中最近添加的记录同名的所有记录

Php 尝试从表B中选择与表A中最近添加的记录同名的所有记录,php,mysql,Php,Mysql,我正在使用php和MySQL。我有两张桌子。我想从表零件中选择与表产品中最近添加的记录具有相同产品名称的所有记录 表产品: id(自动递增) 产品名称 表零件: 产品名称 零件名称 第四部分成本 这行吗?还是我应该使用某种连接 SELECT * FROM parts WHERE prod_name = (SELECT prod_name FROM products ORDER BY id DESC LIMIT 1) 这应该行得通——但如果产品具有自动递增id,为什么要在零件表中使用pr

我正在使用php和MySQL。我有两张桌子。我想从表
零件中选择与表
产品中最近添加的记录具有相同产品名称的所有记录

产品

  • id(自动递增)
  • 产品名称
零件

  • 产品名称
  • 零件名称
  • 第四部分成本
这行吗?还是我应该使用某种连接

SELECT * FROM parts WHERE prod_name = (SELECT prod_name FROM products ORDER BY id DESC LIMIT 1)

这应该行得通——但如果产品具有自动递增id,为什么要在零件表中使用prod_名称作为外键

如果用户想要更改产品名称,这种设计会为您带来额外的工作(然后您必须在所有零件上进行更改,除非您不介意它们失去连接)


此外,它不节省空间(除非产品名称总是很短)。

是的,它可以工作。您始终可以在phpmyadmin或MySql查询浏览器中执行查询来测试它


返回插入的id并选择使用该id可能更好。

执行查询时发生了什么?我认为使用嵌套的select可以很好地解决问题。为什么在零件表中使用prod_名称而不是product_id?当零件输入数据库时,prod_id会自动分配。产品名称不会更改,因此看起来是一个不错的解决方案。如果您不打算使用ID,那么为什么要使用它?顺便说一句,其他人都可以在其他表中使用自动增量ID作为外键。这很容易做到。MySQL返回插入查询后生成的最后一个自动增量的IDmysql\u insert\u id()
。。。这样,您可以在插入后续相关行时使用它。prod name始终较短,并且永远不会更改。
SELECT
  parts.*
FROM
  parts
INNER JOIN
  products
ON
  products.prod_name = parts.prod_name
WHERE
  products.id = (SELECT MAX(id) FROM products)