從同一列(可能不同的行)中選擇首先,我搜索並發現了類似的問題,但沒有一個看起來像我所需要的。在一條SELECT語句中使用JOIN
其次,我做了一個select語句,返回我想要的,但我沒有使用JOIN,並且我想,如果可能的話,使用JOIN,做到這一點,並通過JOIN來理解它。
比方說,我有這些表(簡化,因爲實際的表是更大的):
products:
fields: idproduct, name, idbaseunit;
primary key: idproduct
foreign key: idbaseunit references units.idunit
-----------------------------------------------
units:
fields: idunit, name
primary key: idunit
-----------------------------------------------
prodVSunit:
fields: idprodvsunit, idproduct, idunit, timesbaseunit, cost
primary key: idprodvsunit
foreign key: idproduct references products.idproduct
foreing key: idunit references units.idunit
-----------------------------------------------
這樣做的行爲,我可以有相同的產品,是的BaseUnit但成本的倍數不同單位與倍數不是相對的。我的英文不太好,我不知道這是否很好解釋,所以,下面是一個例子:
如果我將大米註冊爲產品並以盎司作爲基本單位,我可以用英鎊(= 16盎司)作爲一個單位。如果我以每盎司一盎司的價格賣出它的價格可能與英鎊賣出價格不同,那麼假設一盎司爲1.00美元,一磅爲15.45美元。
在數據庫中,它看起來是這樣的:
insert into units(`idunit`, `name`) values(1,'ounce')
insert into units(`idunit`, `name`) values(2,'pound')
insert into products(`idproduct`, `name`, `idbaseunit`) values(1,'rice',1)
insert into products(`idproduct`, `name`, `idbaseunit`) values(2,'sugar',1)
insert into prodVSunit(`idprodvsunit`, `idproduct`, `idunit`, `timesbaseunit`, `cost`) values(1,1,1,1,1.00)
insert into prodVSunit(`idprodvsunit`, `idproduct`, `idunit`, `timesbaseunit`, `cost`) values(2,1,2,16,15.45)
insert into prodVSunit(`idprodvsunit`, `idproduct`, `idunit`, `timesbaseunit`, `cost`) values(3,2,1,1,0.85)
如果我跑這個說法我得到了我想要的:
select pro.name as product, un.name as unit, pvu.timesbaseunit as 'times base unit',
aux.name as 'base unit', pvu.cost
from units un, prodVSunit pvu, products pro,
(select prod.idproduct, prod.idbaseunit, unt.name from products prod, units unt
where prod.idbaseunit = unt.idunit) as aux
where aux.idproduct = pvu.idproduct and pvu.idproduct = pro.idproduct and pvu.idunit = un.idunit
查詢返回:
-------------------------------------------------------------------
product______|unit______|times base unit_|base unit_____|cost_
-------------------------------------------------------------------
rice_________|ounce_____|1_______________|ounce_________|1_________
rice_________|pound_____|16______________|ounce_________|15.45_____
sugar________|ounce_____|1_______________|ounce_________|0.85______
注意(在結果中)「單位」和「基本單位」來自同一個表列,但有時候來自不同的行。
到目前爲止好,但我無法弄清楚使用聯接,是否有可能?我想要JOINs的主要原因是有2個嵌套查詢很好用,但是,如果我有這樣的7或8關係,這將是一個混亂
請原諒我長張貼並提前致謝。
哦!得到它了!!謝謝!!! – Soulless 2011-03-24 19:23:44