![](/img/trans.png)
[英]merger two query into single in mysql (one query's result is input to another query's table name)
[英]In a single MySQL query lookup one column's value in another table
在表f_stock
我列出了清單中的所有項目。 type
列中的整數引用表f_type
的id
。
我想用f_type.id
代替f_stock.type
輸出表f_stock
的內容。 怎么做?
過去,我已經按照以下方式做過一些事情:
$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_type.id
列中查找整數f_stock.type
,我在while循環內創建了第二個$ query / $ result。
表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'
您正在尋找的是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`
-編輯-
@Bruno Vieira的實際上更好,您應該使用LEFT JOIN
而不是INNER JOIN
。 原因是,一個INNER JOIN
只返回f_stock
與匹配的行f_type
行。 如果f_stock.type
為NULL,或者不f_type
具有給定id
的f_stock
則不會返回f_stock
行。 LEFT JOIN
返回所有f_stock
行,然后嘗試盡可能將它們與f_type
行匹配。
在數據庫中使用此查詢。
$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 |
+------+------+--------+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.