2014-10-27 117 views
0
`SELECT products.acctnum,products.subacctnum,NOW(), 
    items.amount,items.id,items.invoice_id,items.product_id, 
    items.po_id, invoices.customer_id, purchaseorders.vendor_id FROM items 
    INNER JOIN (products, invoices, purchaseorders) 
      ON (items.product_id=products.product_id AND items.invoice_id=invoices.id 
    AND items.po_id=purchaseorders.id)` 

这将返回什么... ..然而需要加入MySQL查询3个表

'SELECT products.acctnum,products.subacctnum,NOW(), 
    items.amount,items.id,items.invoice_id,items.product_id, 
    items.po_id, purchaseorders.vendor_id FROM items 
    INNER JOIN (products, purchaseorders) 
      ON (products.product_id=items.product_id AND purchaseorders.id=items.po_id)' 

作品...

'SELECT products.acctnum,products.subacctnum,NOW(), 
    items.amount,items.id,items.invoice_id,items.product_id, 
    items.po_id, invoices.customer_id FROM items 
    INNER JOIN (products, invoices) 
      ON (products.product_id=items.product_id AND invoices.id=items.invoice_id)' 

作品...

厂对于结果中需要的行,但是当我加入第三个表时它不起作用。 LEFT JOIN显示我需要的所有列,但有些行是NULL。谢谢您的帮助。

+0

显然,物品有采购订单或发票,但不是两者都有。 – 2014-10-27 03:19:39

回答

0

我想你想的join条款看起来更像是这样的:

FROM items LEFT JOIN 
    invoices 
    ON invoices.id = items.invoice_id LEFT JOIN 
    purchaseorders 
    ON purchaseorders.id = items.po_id LEFT JOIN 
    products 
    ON products.product_id = items.product_id 

我不知道,当你选择它们,但你也许可以通过使用coalesce()适当的解决这些问题哪些字段是无效的invoicespurchaseorders的字段。