从子查询MySQL中选择列中的值

时间:2016-08-20 15:46:13

标签: php mysql

我正在处理两个数据库表。

A包含许多产品的名称:

_id,
prod_name, 
prod_description,
...

B有备注(它们是销售):

_id, 
note_num, 
prod_id, 
prod_price, 
quantity,
...

我正在寻找代码中的一些自动化

我希望得到如下选择:

SELECT note_num, prod_id, (I want the prod_name from table A), prod_price 
FROM tableB 
WHERE id_ = 1

但是,数据检索器是一个数组。

我想我在子查询中遗漏了一些东西

(SELECT prod_name FROM tableA WHERE prod_id = prod_id)

我的输出必须是这样的数组:

5  | Pink(with id 50) | 40.00
5  | Blue(with id 20) | 50.00
5  | Red (with id 10) | 55.50

3 个答案:

答案 0 :(得分:0)

假设tableA键也是prod_id,请使用INNER JOIN

"SELECT note_num, prod_id, tableA.prod_name, prod_price 
 FROM tableB 
 INNER JOIN tableA on tableB.prod_id = tableA.prod_id 
 WHERE id_ = 1"

答案 1 :(得分:0)

要让两个表中的列都使用INNER JOIN。您甚至可以选择每个表中的哪些列。

SELECT b.*, a.nameColumn1, a.nameColumn2 
  FROM tableB b
  INNER JOIN tableA a 
    ON b.prod_id = a.prod_id 

.*表示表格的所有列。

答案 2 :(得分:0)

通过子查询获取列中的值来尝试使用以下选项吗?在此示例中,项目是主表,(类别和分区)是包含名称列表的表,这些名称列表通过id字段链接到category_id表中的division_idproject。 / p>

SELECT *
, (SELECT name FROM category WHERE category.id = project.category_id) AS 'category'
, (SELECT name FROM division WHERE division.id = project.division_id) AS 'division'
FROM `project`