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