0

我有 2 个 MySQL 表,一个用于零件,一个用于多年。我不知道如何在stackoverflow上制作表格..不断制作标题所以这是我解释我需要什么的弱尝试。

表格1

id | part_id | years
====================
 0 |    15   | 1945
 1 |    15   | 1946
 2 |    16   | 1944
 3 |    16   | 1947
 4 |    16   | 1948
 5 |    17   | 1953

您可能已经猜到了,part_id 是部件表中部件的 id 号。现在,我知道我有这个可以根据年份提取一个不同的零件 ID。那部分很容易。

SELECT DISTINCT part_id FROM `years` WHERE year BETWEEN 1945 AND 1949 

这只是一个例子,但它的工作方式与我想要的完全一样。给我

15 和 16。只有一次。这是伟大的。

现在,我是否需要在 php 中循环以从部件中获取信息?我不知道如何在这里加入。

<?php
foreach($item_pulled_from_db as $newid) {
    $query = "SELECT * FROM 'parts' WHERE id = $newid";
} // I know there's more stuff to do in here, just a basic overview for you to look at
?>

我应该做上面的代码吗?有没有办法选择一个 DISTINCT part_id 然后从另一个表中为 MySQL 中的该 ID 提取数据?还是我必须做这样的循环?

编辑:我希望这不是一个太令人困惑的问题。我不太会说话,这就是我喜欢编程的原因。:)

4

3 回答 3

1

使用连接:

SELECT parts.*
FROM parts
JOIN (SELECT DISTINCT part_id
      FROM years
      WHERE year BETWEEN 1945 AND 1949) years
ON parts.id = years.part_id
于 2012-09-20T00:20:25.107 回答
0

您可以在单个查询中使用 JOIN 来完成此操作。尝试:

SELECT `parts`.* FROM `parts`
INNER JOIN `years` ON `years`.`part_id` = `parts`.`id`
WHERE `years`.`year` BETWEEN 1945 AND 1949

从 PHP 执行该单个查询,然后获取结果集。它应该与使用多个查询得到的结果相同。

于 2012-09-20T00:20:57.630 回答
0

此查询为您提供所需的结果:

SELECT DISTINCT
    p.*
FROM 
    years y
INNER JOIN
    parts p ON p.id = y.part_id
WHERE 
    y.year BETWEEN 1945 AND 1949
于 2012-09-20T00:21:45.683 回答