在表格f_stock
中,我列出了广告资源中的所有项目。 type
列中的整数表示表id
中的f_type
。
我想用f_stock
代替f_type.id
输出表f_stock.type
的内容。这是怎么做到的?
过去我在这些方面做了一些事情:
$query = "SELECT * FROM `f_stock`";
$result = mysql_query ($query) or die (mysql_error ());
while ($row = mysql_fetch_array ($result, MYSQL_ASSOC)) {
$data[] = $row;
}
print_r ($data);
要在f_stock.type
列中查找整数f_type.id
,我在 while 循环中创建了一个辅助$ query / $结果。
表f_stock
:
`type` | `size` | `length`
-------|--------|---------
1 | 3 | 12
1 | 3 | 16
2 | 3 | 20
2 | 3 | 25
1 | 4 | 12
1 | 4 | 16
3 | 4 | 20
表f_type
:
`id` | `type`
------|---------
1 | 'Type 1'
2 | 'Type 2'
3 | 'Type 3'
4 | 'Type 4'
5 | 'Type 5'
6 | 'Type 6'
7 | 'Type 7'
答案 0 :(得分:3)
首先,您应该避免使用mysql
php函数。使用PDO或MySQLi
您只需使用LEFT JOIN
语句就可以解决您的问题,如下所示
SELECT `f_stock`.`size`, `f_stock`.`length`, `f_type`.`type`
FROM `f_stock`
LEFT JOIN `f_type` on `f_type`.`id`=`f_stock`.`type`;
答案 1 :(得分:3)
您要找的是JOIN。
SELECT `f_stock`.`size`, `f_stock`.`length`, `f_type`.`type`
FROM `f_stock`
LEFT JOIN `f_type` ON `f_type`.`id` = `f_stock`.`type`
CNC中
@Bruno Vieira实际上更好,你应该使用LEFT JOIN
而不是INNER JOIN
。原因是INNER JOIN
仅返回具有匹配f_stock
行的f_type
行。如果f_stock.type
为NULL,或者如果不存在具有给定f_type
的{{1}},则不会返回id
行。 f_stock
会返回所有LEFT JOIN
行,如果可能,会尝试将其与f_stock
行匹配。
答案 2 :(得分:2)
在您的数据库中使用此查询。
$query = "SELECT * FROM `f_stock`, `f_type` WHERE `f_stock`.`type` = `f_type`.`id`";
SELECT `f_stock`.`type` as `type`, `size`, `length` FROM `f_stock`, `f_type`
WHERE `f_stock`.`type` = `f_type`.`id`
+------+------+--------+
| TYPE | SIZE | LENGTH |
+------+------+--------+
| 1 | 3 | 12 |
| 1 | 3 | 16 |
| 1 | 4 | 12 |
| 1 | 4 | 16 |
| 2 | 3 | 20 |
| 2 | 3 | 25 |
| 3 | 4 | 20 |
+------+------+--------+