单独的查询是否足够好,或者我可以做某种连接?

时间:2012-03-14 17:19:17

标签: php mysql

基本上我有一个小型的“发票”类型系统,我在其中设置了一个MySQL表,用于单独的发票,发票行和与每张发票相关的项目,如下所示:

表发票:

fields: invoice_id | type | fees | comments | company

-

table invoice_lines:

fields: id | invoice_id | name | description | quantity

-

表invoice_affected_items

fields: id | invoice_id | item_id

我可以将多个发票行和许多受影响的项目添加到一个发票ID中。在这种情况下,联接是最好的还是我应该将发票行加入到表中并使用单独的查询检索受影响的项目?

感谢。

3 个答案:

答案 0 :(得分:2)

恕我直言如果受影响的项目与发票行具有一对一的关系(通过invoice_lines.id = invoice_affected_items.item_id),您可以执行以下两项操作之一

要么保持当前的设计并进行单独的查询

或重新设计如下

  • 完全删除invoice_affected_items个表格
  • invoice_affected_items表格
  • 添加invoice_lines标记
  • 通过(invoice_affected_items,invoice_id)索引invoice_lines以了解哪些发票影响了商品
  • 通过(invoice_affected_items,id)索引invoice_lines以了解哪些发票行是受影响的项目

答案 1 :(得分:1)

您可以加入,但这会导致大量额外数据。例如,如果您将这些行加入发票中,您将多次提取发票 - 每行一次......

所以回答你的问题。我会在单独的查询中执行此操作。

答案 2 :(得分:0)

如果invoice_lines和invoice_affected_items之间没有任何关系,我会进行2次单独查询。