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

时间:2018-03-02 12:24:41

标签: mysql sql subquery

我有三张桌子 - 销售,销售详情,药品。从销售表中,我将收集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为null。查询plz有什么问题?

1 个答案:

答案 0 :(得分:1)

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

  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驱动程序绑定param