从sql中返回的查询值的子查询?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从sql中返回的查询值的子查询?相关的知识,希望对你有一定的参考价值。

我有三张桌子 - 销售,销售详情,药品。从销售表中,我将收集sale_id,然后我将从sales_details获取特定销售的详细信息。除此之外,在sales_details中,还有一个用于医学ID(mid)的单元格。使用那个中期,我还想获得药物名称并在一个查询中返回所有数据。

这是我到目前为止的情况 -

        SELECT `mid`, `qty`, `rate`, `total_price`, `discount`, `total_discount`, (SELECT `medicine`.`product_name` FROM `medicine` WHERE `sales_details`.`mid` = `medicine`.`product_id`) AS 'medicine_name'
        FROM `sales_details`
        WHERE `sale_id` IN (SELECT `sale_id` FROM `sales` WHERE `invoice_no` = '$invoiceID;

我得到所有数据,包括mid,但每行中的medicine_name为空。查询plz有什么问题?

答案

您可以使用内部联接来避免子查询

  SELECT s.`mid`
  , s.`qty`
  , s.`rate`
  , s.`total_price`
  , s.`discount`
  , s.`total_discount`
  , m.`product_name` medicine_name
  FROM `sales_details` d
  INNER JOIN `medicine` d.mid = m.product_id 
  INNER JOIN sales  s on s.sale_id = d.sale_id AND $invoiceID

但是不应该在sql中使用php var你有sqlinjection的风险..为此请看看你的sql驱动程序的绑定参数

以上是关于从sql中返回的查询值的子查询?的主要内容,如果未能解决你的问题,请参考以下文章

查询收集返回多个值的子查询的最大值

SQL查询以选择在同一列中具有不同值的子记录的父级

SQL 数据库 子查询及示例

SQL ---子查询

SQL 数据库 子查询主外键

子查询