2014-10-27 116 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的字段。