2011-04-23 101 views
0

我有兩個表:發票和費用,具有一對多關係。 (簡體)發票具有:身份證,描述,日期作爲字段和收費有:ID,ID_INVOICE,價格,數量,日期爲字段MySQL嵌套查詢:返回來自兩個表的單行和多行查詢

對於發票生成,我需要發票表中的信息,例如, id = 1以及所有來自收費表的信息,其中id_invoice = 1(因此發票一行,收費多行)

目前我有兩個單獨的查詢,但我想知道是否有可能在單個查詢中做到這一點?

感謝

+0

我們能看到這些查詢嗎? – mcgrailm 2011-04-23 23:30:54

回答

1

你可能只是做了兩個表之間的簡單JOIN加入上invoice.id=charges.id_invoice

發票領域將相同返回每次收費在同一張發票上,但它會允許你獲取數據在單個查詢中。

查詢看起來是這樣的:

SELECT * FROM invoice i, charges c WHERE i.id=c.id_invoice ORDER BY i.id; 
+0

謝謝,這是有道理的。從數據庫加載的角度來看,這會比兩個單獨的查詢更高效嗎? – RolandFlyBoy 2011-04-23 23:53:00

+0

這很難說。客戶端的工作量會減少(只有一個查詢而不是兩個),但是有更多的整體數據可能會創建更多的網絡流量。我懷疑它裏面很少。 – 2011-04-23 23:57:51

0

您的需求,一個LEFT JOIN似乎更好。例如:

SELECT * FROM invoice i LEFT JOIN charges c ON i.id=c.id_invoice ORDER BY i.id; 

SQL的一個很好的例子聯接可以發現here