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

问题描述 投票:0回答:1

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

mysql sql subquery
1个回答
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驱动程序的绑定参数

© www.soinside.com 2019 - 2024. All rights reserved.