Re: Can I do this smarter?
От | Aaron Bingham |
---|---|
Тема | Re: Can I do this smarter? |
Дата | |
Msg-id | 44B7A529.6090201@cenix-bioscience.com обсуждение исходный текст |
Ответ на | Re: Can I do this smarter? ("Aaron Bono" <postgresql@aranya.com>) |
Список | pgsql-sql |
Aaron Bono wrote: > On 7/13/06, *Joost Kraaijeveld* <J.Kraaijeveld@askesis.nl > <mailto:J.Kraaijeveld@askesis.nl>> wrote: > > I have three tables: customers, salesorders and invoices. > Customers have > salesorders and salesorders have invoices ( child tables have foreign > key columns to their parent). > > I want to get a list of all invoices with their customers. This > what I > came up with: > > select > invoices.objectid, > invoices.invoicenumber, > invoices.invoicedate, > (select customer from salesorders where objectid = > invoices.salesorderobjectid), > (select customernumber from customers where objectid = (select > customer from salesorders where objectid = > invoices.salesorderobjectid)), > (select lastname from customers where objectid = (select customer > from salesorders where objectid = invoices.salesorderobjectid)) > from invoices > > Can I do this smarter as the three subselects select the same > customer three times and I would think that 1 time is enough? > > > > SELECT > invoices.objectid, > invoices.invoicenumber, > invoices.invoicedate, > salesorders.customer, > customers.customernumber, > customers.lastname > FROM invoices > INNER JOIN salesorders ON ( > salesorders.objectid = invoices.salesorderobjectid > ) > INNER JOIN customers ON ( > customers.objectid = salesorder.customer > ) > > You should do INNER and OUTER joins for connecting the tables by > their foreign keys. You can also rewirite this (IMO) more clearly thus: SELECT invoices.objectid, invoices.invoicenumber, invoices.invoicedate, salesorders.customer, customers.customernumber, customers.lastname FROM invoices, salesorders, customers WHERE salesorders.objectid = invoices.salesorderobjectid AND customers.objectid = salesorder.customer; -- -------------------------------------------------------------------- Aaron Bingham Senior Software Engineer Cenix BioScience GmbH --------------------------------------------------------------------
В списке pgsql-sql по дате отправления: