簡體   English   中英

在單個MySQL查詢中查找另一張表中一列的值

[英]In a single MySQL query lookup one column's value in another table

在表f_stock我列出了清單中的所有項目。 type列中的整數引用表f_typeid

我想用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'

首先,您應該避免使用mysql php函數。 使用PDOMySQLi

您只需使用如下的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`;

您正在尋找的是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具有給定idf_stock則不會返回f_stock行。 LEFT JOIN返回所有f_stock行,然后嘗試盡可能將它們與f_type行匹配。

您可以使用MySQL Joins

在數據庫中使用此查詢。

$query = "SELECT * FROM `f_stock`, `f_type` WHERE `f_stock`.`type` = `f_type`.`id`";

MySQL代碼:

SELECT `f_stock`.`type` as `type`, `size`, `length` FROM `f_stock`, `f_type`
  WHERE `f_stock`.`type` = `f_type`.`id`

小提琴: http ://sqlfiddle.com/#! 2/58892/2

輸出:

+------+------+--------+
| 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM