我有兩個表:發票和費用,具有一對多關係。 (簡體)發票具有:身份證,描述,日期作爲字段和收費有:ID,ID_INVOICE,價格,數量,日期爲字段MySQL嵌套查詢:返回來自兩個表的單行和多行查詢
對於發票生成,我需要發票表中的信息,例如, id = 1以及所有來自收費表的信息,其中id_invoice = 1(因此發票一行,收費多行)
目前我有兩個單獨的查詢,但我想知道是否有可能在單個查詢中做到這一點?
感謝
我有兩個表:發票和費用,具有一對多關係。 (簡體)發票具有:身份證,描述,日期作爲字段和收費有:ID,ID_INVOICE,價格,數量,日期爲字段MySQL嵌套查詢:返回來自兩個表的單行和多行查詢
對於發票生成,我需要發票表中的信息,例如, id = 1以及所有來自收費表的信息,其中id_invoice = 1(因此發票一行,收費多行)
目前我有兩個單獨的查詢,但我想知道是否有可能在單個查詢中做到這一點?
感謝
你可能只是做了兩個表之間的簡單JOIN
加入上invoice.id=charges.id_invoice
發票領域將相同返回每次收費在同一張發票上,但它會允許你獲取數據在單個查詢中。
查詢看起來是這樣的:
SELECT * FROM invoice i, charges c WHERE i.id=c.id_invoice ORDER BY i.id;
謝謝,這是有道理的。從數據庫加載的角度來看,這會比兩個單獨的查詢更高效嗎? – RolandFlyBoy 2011-04-23 23:53:00
這很難說。客戶端的工作量會減少(只有一個查詢而不是兩個),但是有更多的整體數據可能會創建更多的網絡流量。我懷疑它裏面很少。 – 2011-04-23 23:57:51
您的需求,一個LEFT JOIN似乎更好。例如:
SELECT * FROM invoice i LEFT JOIN charges c ON i.id=c.id_invoice ORDER BY i.id;
SQL的一個很好的例子聯接可以發現here
我們能看到這些查詢嗎? – mcgrailm 2011-04-23 23:30:54