2012-03-14 5 views
3

基本的に私はMySQLのテーブルは、個々の請求書、請求書ライン、及びソートのこのような各請求書に関連付けられている項目について設定した小さな「請求書」型システムを有する:別のクエリで十分ですか、それとも何らかの結合ができますか?

テーブル書:

fields: invoice_id | type | fees | comments | company 

-

テーブルinvoice_lines:

fields: id | invoice_id | name | description | quantity 

-

テーブル

fields: id | invoice_id | item_id 

invoice_affected_items私は1つの請求書IDに多くの請求書のラインと多くの影響を受けたアイテムを持つことができます。この場合、最高の結合が必要ですか、または私はテーブルへの請求書行に参加し、別のクエリを使用して影響を受けるアイテムを取得するだけですか?

ありがとうございました。

答えて

1

あなたは参加することができますが、それは余分なデータをたくさん引っ張ることになります。たとえば、請求書にラインを参加させる場合は、請求書を複数回(1行につき1回)引っ張ります。

質問に答えてください。私は別のクエリでそれをやっています。私見

+0

良い説明。ありがとうございました! –

0

invoice_linesとinvoice_affected_itemsの間に関係がない場合は、2つの別々のクエリを実行します。

+0

おかげで、影響を受けた項目が何であるか、請求書を知っている(invoice_affected_items、ID)によって項目

  • インデックスinvoice_linesに影響を与えているかを知るために(invoice_affected_items、invoice_id)によってでき
  • インデックスinvoice_lines! –

  • 2

    影響を受けた項目は次の2つの事

    のいずれかを実行します。どちらのあなたの現在の設計を維持し、別のクエリを行うことができ、請求書のライン(invoice_lines.id = invoice_affected_items.item_id経由)との1対1の関係を持っている場合は

    または再設計

    • invoice_affected_itemsテーブル完全
    • invoice_linesトンにinvoice_affected_itemsフラグを追加、削除、次のように請求書は、ライン入力用
    関連する問題